私はオプションのメソッドでプロトコルを実装しましたが、メッセージを送信する前にrespondsToSelector:
をself.delegate
に送信したいが、それはコンパイルされません。失敗メッセージは次のとおりです。self.delegate respondsToSelector:...コンパイルされません
セレクタ 'respondsToSelector'の既知のインスタンスメソッドはです。回避策として
以下に示すように、私は...
//MyClass.h:
@class MyClass;
@Protocol MyClassDelegate
- (void)myClass:(MyClass *)sender willDoSomething:(BOOL)animated;
@end
@interface MyClass : UIViewController
@property (nonatomic, weak) id<MyClassDelegate> delegate;
@end
と
//MyClass.m:
...
@synthesize delegate = _delegate;
...
id sanitizedDelegate = self.delegate; //Hmmmm... why does this work?
if ([sanitizedDelegate respondsToSelector:@selector(myClass:willDoSomething:)]) {
[self.delegate myClass:self willDoSomething:animated];
}
をコンパイルした、デリゲートを "サニタイズ"。
this oneを含む多数の投稿を確認しましたが、コンパイル失敗の問題には答えません。
また、代替アクセサは動作しません...
[self delegate]
//or
_delegate
は、誰もがこれを見ているか、ハンドリングのより良い方法を助言することができますか?
IOS 5.0:(9A334)、Xcodeの4.2.1(4D502)
Ka-ching ...私はドア#3を持っていきます。 – vmanjz
代理人をNSObjectとして宣言しました。ありがとうございました! – c0d3Junk13