zou*_*oul 3 protocols objective-c
你如何称呼可选的协议方法?
@protocol Foo
@optional
- (void) doA;
- (void) doB;
@end
Run Code Online (Sandbox Code Playgroud)
现在我们每次要打电话时都要检查doA或doB:
if ([delegate respondsToSelector:@selector(doA)])
[delegate performSelector:@selector(doA)];
Run Code Online (Sandbox Code Playgroud)
那太傻了.我想出了一个类别NSObject:
- (void) performSelectorIfSupported: (SEL) selector
{
if ([self respondsToSelector:selector])
[self performSelector:selector];
}
Run Code Online (Sandbox Code Playgroud)
......哪个好多了.你有一个更聪明的解决方案,或者你是否只是在每次通话前忍受条件?
我不完全确定我理解你的反对是诚实的.据我所知,代码完全符合您对可选方法的期望,并且只需要很少的额外措辞.我不认为你的类别让你的意图更清楚.
对您的第一个选项的唯一更改是这样做:
if ([delegate respondsToSelector:@selector(doA)])
[delegate doA];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6715 次 |
| 最近记录: |