I've got used wrapping sending @optional
delegate's methods into:
if ([self.delegate respondsToSelector:@selector(method:)]) {
[self.delegate method:obj];
}
It works well, but if there are lot of delegate's methods, it looks like duplicating respondToSelector:
code...
At some point of time I've put respondsToSelector:
to separate method:
//ignore warning
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- (void)performDelegateSelector:(SEL)selector withObject:(id)obj {
if ([self.delegate respondsToSelector:selector]) {
[self.delegate performSelector:selector withObject:obj];
}
}
As a result I have just one respondToSelector: check, but It still doesn't look like well improved.
[self performDelegateSelector:@selector(method:) withObject:self];
What do you think? Does it make sense in using some helpers or category to wrap sending all @optional
delegate's methods, or it's something that shouldn't be improved?