2012-04-03 8 views
8

estoy recibiendo el aviso sujeto en la línea siguiente:Advertencia: Unimplemented Selector localizedCaseInsensitiveCompare

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

Y no siempre se consigue que la alerta. Es decir, la advertencia recién comenzó a aparecer recientemente, posiblemente debido a un cambio en la configuración de compilación. No veo un error tipográfico, aquí. Esto se ve (para mí) como el código que he visto en muchos ejemplos. No veo una excepción de tiempo de ejecución. Pero no me gustan las advertencias Alguien ha visto esto? ¿Alguna idea de lo que lo está desencadenando?

Respuesta

14

¿Encendiste -Wselector? (También llamado "Tipos de definición múltiple para selector"). Esta advertencia es incompatible con Foundation y no debe activarla. Existe porque tiene sentido en Objective-C "puro". Simplemente no en ningún Objective-C que pueda escribir (es decir, cualquier cosa que use Cocoa).

La advertencia que desea es -Wundeclared-selector, también denominada "Selector no declarado".

Es algo anticuado, pero he compilado una lista completa de las advertencias de GCC y si se activan o desactivan en mi archivo Shared.xcconfig. También hay un very helpful bestiary compiled by Jean-David Gadina que está un poco más actualizado.

+0

Eso lo hizo. Gracias. – DRVic

+0

Hola @Rob Napier, acabo de actualizar a xcode 5 y recibo la advertencia "Selector no encontrado", como sugirió, verifiqué la opción "Múltiples tipos de definición para el selector", y ya está configurada en NO. Pero aún recibo la advertencia. Entonces lo que hay que hacer. – Ranjit

+0

Esa es una advertencia diferente de la que se trata esta pregunta. Si recibe esa advertencia después de la actualización, eso sugiere que está utilizando un método que se ha eliminado. Debería abrir una nueva pregunta con detalles de qué método está usando, qué SDK está usando y la advertencia exacta (aunque comenzaría simplemente por verificar que el método realmente exista). –