selector no reconocido enviado a class – para el método estático sin parameters

.marido

#import <Foundation/Foundation.h> #import "Person.h" extern NSString *const kRemindersWeekly; extern NSString *const kRemindersDaily; @interface Reminders : NSObject +(void)setRemindersForPerson: (Person*) person; +(void)setEightDayReminder; @end 

.metro

 #import "Reminders.h" @implementation Reminders NSString *const kRemindersWeekly = @"WEEKLY"; NSString *const kRemindersDaily = @"DAILY"; + (void) setRemindersForPerson: (Person*) person { // some code } +(void)setEightDayReminder { // some more code } @end 

cuando llamo:

 [Reminders setRemindersForPerson: p]; 

esto siempre funciona bien. Cuando llamo:

 [Reminders setEightDayReminder]; 

Yo obtengo:

 +[Reminders setEightDayReminder]: unrecognized selector sent to class 0xe1b58 

Además, [Reminders setRemindersForPerson:]; llama [Person setEightDayReminder] sin ningún problema. Construye bien y Comando haciendo clic en funciones en XCode lo muestra. Creo que todo está en order, ya que me lleva a los lugares apropiados.

Debe faltar algo obvio ?! Sacando mi cabello

Tuve un problema muy similar, y la causa fue que tenía una categoría en la que olvidé especificar la categoría en el bloque @implementation, anulando de manera efectiva la implementación original con el "nuevo".

Por lo tanto, si tiene una categoría MyCategory en la class SomeClass, asegúrese de que su implementación sea similar a:

 @interface SomeClass (MyCategory) ... 

y no me gusta:

 @interface SomeClass ... 

Hay una forma sencilla de depurarla: coloque un punto de interrupción allí y observe lo que está sucediendo.

Consulte Crear un punto de interrupción en Xcode para un selector no reconocido cómo crear un punto de interrupción para los selectores no reconocidos. Su rastreo de stack debe decirle todo lo que necesita saber.

Probablemente debería agregar su código de llamada también.