17

En primer lugar, he visto que hay muchas preguntas sobre el problema del "selector no reconocido enviado a la instancia".
He visto pocos pero no vi nada sobre el acceso a una propiedad de categoría definida ...iPhone: Categoría con propiedad + excepción "selector no reconocido enviado a la instancia"

Tengo una categoría en UILabel con una propiedad.
Se definen el getter y el setter.
Actualmente tengo la misma propiedad en 2 categorías diferentes (para 2 clases diferentes: UIButton y UILabel).
El problema es que puedo acceder a esta propiedad para UIButton pero no para UILabel.
Una vez que intento acceder a cualquier método/propiedad en la categoría UILabel (texto), se descarta la excepción "- [UILabel test]: selector no reconocido enviado a instancia 0x4e539f0".

Se importan ambos archivos de categorías.

No tengo idea de cuál es el problema.

Aquí hay un código:

// UILabel+text.h 
@interface UILabel (text) 
    - (void)test; 
@end 

// UILabel+text.m 
@implementation UILabel (text) 
- (void)test { 
    NSLog(@"test"); 
} 
@end 

// UIButton+text.h 
@interface UIButton (text) 
    - (void)test; 
@end 

// UIButton+text.m 
@implementation UIButton (text) 
- (void)test { 
    NSLog(@"test");// works 
} 
@end 

// Usage (in UIViewController class) - both elements are defined in XIB 
[self.button test];// works 
[self.label test];// exception 

se observará ninguna ayuda.
No tengo ni idea de un posible problema ...

Gracias.

Michael.

+0

Interesante ... ¿Funcionan cuando se crean por código? (no XIB) – Eonil

+0

Pruebe '[[[UILabel alloc] init] test]' para reducir el posible origen del problema. – Jim

+1

Gracias por las respuestas rápidas. @Steven ya respondió mi pregunta. El archivo "UILabel + text.m" se agregó a un destino diferente ... –

Respuesta

42

¿Está utilizando una biblioteca estática? Si es así, agregue all_load a otros indicadores de enlazador.

¿Estás seguro de que "UILabel + text.m" está en el objetivo?

+4

¡Eso es todo! Siempre me olvido del problema de los objetivos ... ¿Hay alguna manera de definir los nuevos archivos para agregarlos a todos los objetivos por defecto? –

+0

Eso no lo sé, Xcode generalmente parece sensato en mi caso. ¿Tal vez sea su última selección por defecto? –

+0

'-all_load' funciona la mayor parte del tiempo, si quieres saber el motivo, verifica esta respuesta: http://stackoverflow.com/a/2906210/146032 – bithavoc

Cuestiones relacionadas