Я реализовал протокол с необязательным методом, и в методе вызова я хочу отправить respondsToSelector:
на self.delegate
перед отправкой сообщения, но это не компилируется.Сообщение об ошибке:
Нет Известный метод экземпляра для селектора 'respdsToSelector' .
В качестве обходного пути я "санировал" делегата, как показано ниже, которыйкомпилирует ...
//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];
}
.
Я проверил несколько сообщений, включая этот , но он не отвечаетпроблема сбоя компиляции.
Кроме того, альтернативные средства доступа не работают ...
[self delegate]
//or
_delegate
Кто-нибудь видел это или может посоветовать лучший способ обработки?
IOS5.0: (9A334), Xcode 4.2.1 (4D502)