在我的协议中,我创建了一个BOOL返回值的方法,我希望默认返回YES。我该如何设置?
这是我的实施:
//MyFilter.h
@protocol MyFilter <NSObject>
- (BOOL)filterSomething:(NSString *)something;
@end
我的想法是允许其他类(比如说ClassA)符合这个协议,并且当调用此方法默认返回YES时,如果ClassA以其他方式过滤它,则修改返回值。我知道如何修改它,但我不确定如何将YES设置为默认值。
答案 0 :(得分:0)
答案 1 :(得分:0)
与@ZeMoon建议一样,您可以使用respondsToSelector:
方法检查是否为特定对象实现了此方法。另一种可能性是为NSObject
提供默认实现:
@protocol MyFilter <NSObject>
- (BOOL)filterSomething:(NSString *)something;
@end
@interface NSObject (MyFilter) <MyFilter>
@end
@implementation NSObject (MyFilter)
- (BOOL)filterSomething:(NSString *)something {
return YES;
}
@end
@implementation ClassA
- (BOOL)filterSomething:(NSString *)something {
// your implementation
}
@end
在这种情况下,您可以安全地为任何对象调用filterSomething:
而无需额外检查:
return [anObject filterSomething:someString];