特別なことが起こったときに、(もしあれば)デリゲートと呼ぶべきクラスのデリゲートを実装しようとしています。
ウィキペディアから私はこのコード例を持っています:
@implementation TCScrollView
-(void)scrollToPoint:(NSPoint)to;
{
BOOL shouldScroll = YES;
// If we have a delegate, and that delegate indeed does implement our delegate method,
if(delegate && [delegate respondsToSelector:@selector(scrollView:shouldScrollToPoint:)])
shouldScroll = [delegate scrollView:self shouldScrollToPoint:to]; // ask it if it's okay to scroll to this point.
if(!shouldScroll) return; // If not, ignore the scroll request.
/// Scrolling code omitted.
}
@end
これを自分で試してみると、デリゲートで呼び出しているメソッドが見つからないという警告が表示されます。もちろんそうではありませんでした。なぜなら、デリゲートはidによって参照されているだけだからです。それは何でもかまいません。セレクターに応答するかどうかを確認するので、実行時に問題なく動作します。しかし、Xcodeでの警告は必要ありません。より良いパターンはありますか?