iOS 8引入containsString
到NSString
,检查接收器是否包含子字符串。它不如写[myString rangeOfString:@"substring"].location == NSNotFound
那么笨拙。我想在NSString
上编写一个类别,为iOS 7及更低版本定义containsString
。我有两个条件来定义它:
[customPrefix]ContainsString
来获得便宜的出路。我的目标是避免尴尬,而不必考虑两个containsString
函数。这就是我认为代码类似的东西:
@implementation NSString (utility)
#if MAGIC_MACRO_CONTAINS_STRING_NOT_DEFINED
- (BOOL)containsString:(NSString*)substring
{
return [self rangeOfString:substring].location != NSNotFound;
}
#endif
@end
答案 0 :(得分:1)
为您的类别方法提供您自己的唯一名称。如果新的containsString
存在,请将其写为rangeOfString
,如果不存在则为- (BOOL)myContainsString:(NSString*)substring
{
if ([self respondsToSelector:@selector(containsString:)]) {
return [self containsString:substring];
} else {
return [self rangeOfString:substring].location != NSNotFound;
}
}
。
无法有条件地实施类别方法,这就是您应该使用自己的名称创建类别方法的原因。并且您不能使用编译器指令宏,因为它们在编译时工作,而不是运行时。
[someString myContainsString:someSubstring]
现在您在所有代码中使用{{1}}。