Предупреждение: не реализованный селектор localizedCaseInsensitiveCompare - PullRequest
8 голосов
/ 03 апреля 2012

Я получаю предупреждение о предмете в следующей строке:

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

И я не всегда получал это предупреждение. То есть, предупреждение только недавно появилось, возможно, из-за изменения настроек компиляции. Я не вижу опечатку здесь. Это выглядит (для меня) как код, который я видел во многих примерах. Я не вижу исключения во время выполнения. Но я не люблю предупреждения. Кто-нибудь видел это? Есть идеи, что это вызывает?

1 Ответ

14 голосов
/ 03 апреля 2012

Вы включили -Wselector? (Также называется «Типы множественного определения для селектора».) Это предупреждение несовместимо с Foundation, и его не следует включать. Он существует, потому что имеет смысл в «чистом» Objective-C. Только не в Objective-C, который вы когда-либо могли бы написать (то есть, что-либо, использующее Какао).

Требуемое предупреждение -Wundeclared-selector, также называемое «Необъявленный селектор».

Это несколько устарело, но я собрал полный список предупреждений GCC и их включение или отключение в моем файле Shared.xcconfig . Есть также очень полезный бестиарий, составленный Жаном-Давидом Гадиной , который немного более современный.

...