2012-04-03 100 views
8

我得到的主题警告以下行:警告:未实现选择localizedCaseInsensitiveCompare

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

而且我也不能总是得到该警告。也就是说,该警告刚刚开始出现,可能是由于编译设置的更改。我在这里看不到错字。这看起来(对我来说)就像我在许多例子中看到的代码一样。我没有看到运行时异常。但我不喜欢警告。任何人看到这个?任何想法是什么触发它?

回答

14

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

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

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

+0

这样做。谢谢。 – DRVic 2012-04-03 14:18:49

+0

嗨@Rob Napier,我刚刚更新到xcode 5,我收到警告“找不到选择器”,正如您所建议的,我选中了“选择器的多种定义类型”选项,并且它已被设置为NO。但我仍然得到警告。那么该怎么办。 – Ranjit 2013-09-19 09:33:45

+0

这是一个不同于这个问题的警告。如果升级后出现此警告,则表明您正在使用已删除的方法。你应该打开一个新的问题,详细说明你使用的是什么方法,你使用的是什么SDK,以及确切的警告(尽管我会首先验证该方法实际存在)。 – 2013-09-19 13:10:15