警告:未实现的Selector localizedCaseInsensitiveCompare

时间:2012-04-03 13:29:54

标签: objective-c cocoa xcode4.2

我在下一行收到主题警告:

   NSSortDescriptor * sort = [ [NSSortDescriptor alloc] initWithKey:@"name"
                                 ascending:YES
                                  selector:@selector(localizedCaseInsensitiveCompare:) ];

我并不总是得到那个警告。也就是说,警告刚刚开始出现,可能是由于编译设置的变化。我在这里看不到拼写错误。这看起来(对我来说)就像我在许多例子中看到的代码一样。我没有看到运行时异常。但我不喜欢警告。谁见过这个?有什么想法触发它吗?

1 个答案:

答案 0 :(得分:14)

你开启-Wselector了吗? (也称为“选择器的多个定义类型”。)此警告与Foundation不兼容,您不应该打开它。它的存在是因为它在“纯粹的”Objective-C中确实有意义。只是没有任何Objective-C你可能会写(即任何使用Cocoa的东西)。

您想要的警告是-Wundeclared-selector,也称为“未声明的选择器”。

它有些过时了,但我编制了一份GCC警告的完整列表,以及是否在Shared.xcconfig文件中打开或关闭它们。还有一个very helpful bestiary compiled by Jean-David Gadina更新一点。