2012-04-03 73 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