NSViewサブクラスに次のコードがあります。
- (id)forwardingTargetForSelector:(SEL)aSelector
{
if ([super respondsToSelector:@selector(forwardingTargetForSelector:)]) {
// cast to (id) to avoid "may not respond to selector" warning
return [(id)super forwardingTargetForSelector:aSelector];
} else {
[self doesNotRecognizeSelector:aSelector];
return nil;
}
}
最初の行では、GCCコンパイラの下で、このような回答で示唆されているように、スーパークラス(NSView)が応答しない可能性があるという警告を抑制したためにreturn [(id)super ...キャストsuperします。idforwardingTargetForSelector:
ただし、LLVMコンパイラに切り替えると、「スーパーをキャストできません」というエラーが発生します。LLVMとGCCの両方で警告もエラーも表示されないようにコードを変更する正しい方法はありますか?