2016-06-30 11 views
0

ご存じのように、デリゲートを宣言しなければならないプロトコルを適用する場合。弱いプロパティをプロトコルのように使用しない

@property (weak) id<NameOfProtocol> delegate; 

しかし、私はこのように宣言するとき、Xcodeはこれで間違って何

@property (weak) id<NameOfObject> pointer; 

(プロトコルを使用しないで)障害メッセージを示して?あなたは

@property (weak) id<NameOfProtocol> delegate; 

に行くとき

+0

はあなたのヘッダーのコードあなた:)説明のため – ronan

答えて

2

は、だから、私はNameOfProtocolに準拠して、いくつかのタイプを指す変数をしたいと言っています。あなたが実際に変数の型があることを行っている(そしてあなたは、それがNameOfProtocolからメソッドを実装するように注意していけない)何を知らないので、あなたは

@property (weak) id<NameOfObject> pointer; 

doesntのメイクながら

それは idタイプである必要が私は変数がほしいと言っているので、私はタイプがわからないので、私は idが必要ですが、それはNameOfObjectに準拠しています...タイプが矛盾しています。

したがって、この場合

@property (weak) NameOfObject *pointer; 
+0

感謝をアップしたファイルを置きます。私は理解した –

+0

問題がない場合は、答えとしてマークする必要があります – Fonix

1

@property (weak) id<NameOfProtocol> delegate; がNameOfProtocol

に準拠している場合

@property (weak) id<NameOfObject> pointer; は、変数は、任意のタイプとすることができるが、それはそれには意味を持たない

をNameOfObjectされなければならない入力手段変数は、任意のタイプとすることができることを意味します。

代わりの @property (weak) NameOfObject *pointer;

関連する問題