Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa Mac OS X 10.7.3添加了-[NSDictionary stringForKey:]方法?_Cocoa_Osx Lion_Nsdictionary_Objective C Category - Fatal编程技术网

Cocoa Mac OS X 10.7.3添加了-[NSDictionary stringForKey:]方法?

Cocoa Mac OS X 10.7.3添加了-[NSDictionary stringForKey:]方法?,cocoa,osx-lion,nsdictionary,objective-c-category,Cocoa,Osx Lion,Nsdictionary,Objective C Category,我有报告证实,我的一个应用程序中的一个功能不符合10.7.3。经调查,10.7.3似乎在NSDictionary上引入了一个私有的-stringForKey:方法 [NSDictionary respondsToSelector:@selector(stringForKey:)]如人们所料,返回NO 但是我在NSDictionary上有一个category方法来实现-stringForKey:方法,如下所示(因此它也可以用于NSNumber和NSDate值)。在10.7.2和更早的版本中,它可以

我有报告证实,我的一个应用程序中的一个功能不符合10.7.3。经调查,10.7.3似乎在
NSDictionary
上引入了一个私有的
-stringForKey:
方法

[NSDictionary respondsToSelector:@selector(stringForKey:)]
如人们所料,返回NO

但是我在
NSDictionary
上有一个category方法来实现
-stringForKey:
方法,如下所示(因此它也可以用于
NSNumber
NSDate
值)。在10.7.2和更早的版本中,它可以正常工作;根据10.7.3,它返回零。直接获取对象和描述效果很好。因此,这一定是一种类别冲突

- (NSString *)stringForKey:(id)key;
{
    return [[self objectForKey:key] description];
}
我想这是另一个支持在category方法前面加前缀的论点,尽管如此

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

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


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

好吧,因为Apple对前缀有着相互冲突的观点(参见我的链接帖子),所以它不是那么清晰。@Dejal:“Apple”不是一个对所有事情都有一个意见的单一实体。只需看看各种示例代码中的混合样式。由于你没有公布你从福音传道者那里得到的实际回应,我无法判断你对他所说的话的解释是否正确,但这并不重要。简单的事实是,您应该始终为您在框架类上声明的类别方法添加前缀。没有理由不这样做,正如你所发现的,有很大的理由不这样做。@Dejal Kevin是对的。我在上贴了一个答案来帮助你解决这个问题。在上一个问题中进行了跟进。