最近升级xcode7.3 遇到一个莫名其妙的问题:具体见代码
NSDictionary (YYAdditions):
-(NSString *)stringForKey:(id)key {
id result = [self objectForKey:key];
if([result isKindOfClass:[NSString class]])
{
return (NSString*)result;
}else if([result isKindOfClass:[NSNumber class]]){
return [(NSNumber *)result stringValue];
}
else {
return @"";
}
}
这是一个NSDictionary的category 目的是为了在获取value时候对类型做排错判断,之前一直使用没有问题,直到在xcode7.3中,发现代码中调用此方法居然不执行,调试半天发现最有可能的原因是:”stringForKey:“命名和系统类 “NSUserDefaults”中定义的
/// -stringForKey: is equivalent to -objectForKey:, except that it will convert NSNumber values to their NSString representation. If a non-string non-number value is found, nil will be returned.
- (nullable NSString *)stringForKey:(NSString *)defaultName;
该方法重名。在我将类别中自定义的方法重命名后,问题没有再出现,但是心里比较疑惑的是之前一直没有问题,难道是新版本对方法检测做出了改变?
-(NSString *)fl_stringForKey:(id)key;
所以将问题先记录下来,欢迎大家讨论,如果有新的认识,我会及时更新博客!