2012-04-03 16 views
8

sto ottenendo l'avvertimento soggetto sul seguente riga:Attenzione: Unimplemented Selector localizedCaseInsensitiveCompare

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

E io non sempre ottenere che avvertimento. Cioè, l'avviso ha appena iniziato a comparire di recente, probabilmente a causa di una modifica delle impostazioni di compilazione. Non vedo un errore di battitura, qui. Questo mi sembra (proprio come il codice che ho visto in molti esempi). Non vedo un'eccezione di run time. Ma non mi piacciono gli avvertimenti. Qualcuno ha visto questo? Qualche idea su cosa lo sta scatenando?

risposta

14

Hai acceso -Wselector? (Chiamato anche "Multiple Definition Types for Selector.") Questo avviso è incompatibile con Foundation e non dovresti accenderlo. Esiste perché ha senso in "puro" Objective-C. Non solo in qualsiasi Objective-C che potresti mai scrivere (ad esempio, qualsiasi cosa usi Cocoa).

L'avviso desiderato è -Wundeclared-selector, denominato anche "Selettore non dichiarato".

È un po 'datato, ma ho compilato un elenco completo di avvisi GCC e se accenderli o disattivarli nel mio file Shared.xcconfig. C'è anche un very helpful bestiary compiled by Jean-David Gadina che è un po 'più aggiornato.

+0

L'ha fatto. Grazie. – DRVic

+0

Ciao @Rob Napier, ho appena aggiornato a xcode 5 e ricevo l'avviso "Selettore non trovato", come suggerito ho controllato l'opzione "Tipi di definizione multipli per il selettore", e il suo già impostato su NO. Ma continuo a ricevere l'avvertimento. Quindi che si fa. – Ranjit

+0

Questo è un avvertimento diverso rispetto a questa domanda. Se ricevi questo avviso dopo l'aggiornamento, ciò suggerisce che stai utilizzando un metodo che è stato rimosso. Dovresti aprire una nuova domanda con i dettagli sul metodo che stai utilizzando, sull'SDK che stai utilizzando e sull'avviso esatto (anche se inizierei solo verificando che il metodo esista effettivamente). –