ObjectProperties.hのObjective-Cプロトコルフォワード宣言
@protocol ObjectProperties <NSObject>
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDate *date;
@property (assign, nonatomic) int64_t index;
@end
ClassA.h
#import <Foundation/Foundation.h>
@protocol ObjectProperties;
@interface ClassA : NSObject <ObjectProperties>
- (void)specialSauce;
@end;
ManagedClassA.h
#import <CoreData/CoreData.h>
@protocol ObjectProperties;
@interface ManagedClassA : NSManagedObject <ObjectProperties>
- (void)doSomething;
@end;
上記のコード例では、.hファイルのプロトコルをCore Dataオブジェクトとプレーンオールバニラオブジェクトの両方で使用するように定義しました。準拠しているクラスを持つことは "ノイズ"のように思える#プロトコルをそのヘッダにインポートする。上に示したように、実装ファイルにプロトコル&のインポートを宣言しておくと、より洗練されたものになります。しかし、このようにそれをやったときに、Xcodeは警告をスロー:
Cannot find protocol definition for 'ObjectProperties'
コードをコンパイルし、主に動作します。私は主に、Core Dataがスカラープロパティのgetters/setterを動的に作成しようとしているために、いくつかのファンクがあると言いますが、それはおそらく私が端に当たったためです。
もちろん、最も顕著な回避策は、プロトコルヘッダーをクラスヘッダーにインポートすることです。
私の理解が正しい場合(私の知識は非常に最近取得されているので、私が間違っている可能性があります)、プロトコルを自分のクラスヘッダーにインポートしてプロトコルを変更すると、私のクラスをインポートするファイルは再コンパイルする必要があります。
このタイプの問題を解決する正しい方法は何ですか?
私にも同様の問題がありますが、Swiftプロトコルがあります。 – Alper