У меня есть следующий код в подклассе 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;
}
}
В первой строке return [(id)super ...
приводит super
к id
, потому что в компиляторе GCC это подавило предупреждение о том, что суперкласс (NSView) может не отвечать на forwardingTargetForSelector:
, как предлагается в ответах такие как этот .
Однако, когда я переключаюсь на компилятор LLVM, это приводит к ошибке «Can't cast super». Есть ли правильный способ изменить мой код, чтобы я не получил ни предупреждение, ни ошибку ни в LLVM, ни в GCC?