id<Protocol>と書くときの@protocolの宣言の方法
delegateをメンバに持つようなクラスを作るとき、delegateの型をidじゃなく特定のProtocolが実装されていることを指定したい時がある。そういう時はid
調べてみたところ以下のページに解説があった。
id<Protocol>, Retain/Release and Protocol Inheritance | Mobile Orchard
Protocolの宣言時にNSObject Protocolを継承すればいいらしい。
つまり
@protocol MyProtocol <NSObject> - (void)hoge; @end
と書けば警告が出なくなる。