ответ sidyll работает, но есть лучшее решение.
Как правило, вы объявляете протокол:
@protocol MyOptionalMethods
@optional
- (void)method:(NSDictionary*)dict;
@end
И объявляете ваш объект соответствующим протоколу:
id<MyOptionalMethods> foo;
UIView*<MyOptionalMethods> bar; // it'll be a subclass o' UIView and may implement pro to
Затем проверьте:
if ([foo respondsToSelector:@selector(method:)])
[foo method: dict];
Таким образом, у компилятора есть возможность полностью проверить тип всех аргументов.Кроме того, этот шаблон не ограничивается методами, которые не принимают аргументов или один аргумент объекта.
Кроме того, он защищен от перехода на ARC в будущем (поскольку ARC справедливо жалуется на хрупкость executeSelector:).