2011-01-11 10 views
9

Hola, estoy recibiendo este mensaje de error. y por el amor al plátano, no puedo entender lo que no estoy haciendo bien.xcode: propiedad 'título' 'copia' no coincide con super clase 'UIViewController' propiedad

Es sólo un

IBOutlet UILabel *title; 

y

@property(nonatomic, retain) IBOutlet UILabel *title; 

que he hecho, que está conectado a mi archivo xib conectado a un UILabel porque dinámicamente cambiar el título durante el tiempo de ejecución.

Clases /../ taskViewController.h: 44: advertencia: el alojamiento 'título' 'copia' atributo no coincide superclase 'UIViewController'

No entiendo lo que significa. Normalmente soy capaz de deshacerme de los mensajes de advertencia. Pero este ... No tengo ni idea de lo que está pasando.

¿Puede alguien guiarme y explicar lo que está sucediendo aquí?

Respuesta

15

Su problema es que UIViewController ya define una propiedad de título y está utilizando una opción de gestión de memoria diferente a la que tiene. Para solucionar esto, cambie el nombre de su propiedad. ex: @property (nonatomic, copy) UILabel *titleLabel;. Si desea que la variable de instancia tenga el mismo nombre y usa @synthesize, use @synthesize titleLabel=title;.

Como un lado, ¿por qué está copiando un UILabel? Normalmente deberías usar retener para que sea el mismo objeto.

+0

esto es lo que tengo ... No tengo la palabra 'copiar', de hecho tengo la palabra 'retener' en ella ..... @property (no atómico, retener) IBOutlet UILabel * título; – Pavan

+0

Entonces UIViewController debe usar copy. Lo habría esperado ya que es un NSString, pero pensé que el error daría lo que usaste. – ughoavgfhw

+0

cambiando el nombre de la etiqueta ayudado. Muchas gracias por esta ayuda. Entonces, si entiendo correctamente, UILabel es una subclase de UIViewController que contiene una propiedad llamada title y puse nombre a mi título de nombre de variable que entraba en conflicto con esa propiedad ... causando que esa advertencia apareciera – Pavan

3

Significa:

  • tiene una subclase de UIViewController
  • que contiene una propiedad denominada "título"
  • se ha declarado la propiedad con la "copia" atributo
  • la clase padre (UIViewController) ya tiene propiedad de "título" con una definición en conflicto (es decir, no "copia")
+0

pero no lo tengo? todo lo que he hecho es ... @property (nonatomic, retener) IBOutlet UILabel * title; – Pavan

+0

Ok, tal vez el mensaje esté hacia atrás entonces, y es 'UIViewController' el que lo declara' copy'. En cualquier caso, es probable que desee cambiar su nombre de variable para evitar el conflicto, como sugiere ughoavgfhw. –

+0

@DavidGelhar por lo que el atributo de la subclase anulará el atributo de la superclase? – onmyway133

0

Bueno, quiero simplemente aclare que el título es un objeto predefinido en el UIViewController por lo que no puede crear sus propios objetos con ese mismo nombre, cambie el texto con algo más y vea que no le dará ese error.

Cuestiones relacionadas