Mac OS X 10.7.3添加了-NSDictionary字符串ForKey:]方法



我收到报告,经我确认,我的一个应用程序中的一个功能低于10.7.3。经过调查,10.7.3似乎在NSDictionary上引入了一个私有的-stringForKey:方法。

正如人们所期望的那样,[NSDictionary respondsToSelector:@selector(stringForKey:)]返回NO。

但我在NSDictionary上有一个类别方法来实现-stringForKey:方法,如下所示(因此它也可以用于NSNumberNSDate值)。根据10.7.2及更早版本,它运行良好;在10.7.3以下,它的回报为零。直接获取对象和描述效果良好。所以这一定是一个类别冲突。

- (NSString *)stringForKey:(id)key;
{
    return [[self objectForKey:key] description];
}

我想这是另一个支持在类别方法前面加前缀的论点,尽管我从一位苹果应用程序框架的福音派那里得到了建议。

其他人能证实这一点吗?我不认为这是第三方应用程序冲突;我认为这是10.7.3中的一个变化。

您应该始终为您在框架类上创建的类别方法添加前缀。毫无疑问。10.7.3是否引入了这个方法并不重要,事实上你在声明它时没有前缀是错误的。

顺便说一句,测试[NSDictionary respondsToSelector:@selector(stringForKey:)]并不一定有效。NSDictionary是一个类集群,所以您只是在询问抽象的超类,而私有方法可能只存在于具体的子类上。

最新更新