iphone - [UILabel copyWithZone:]: selector no reconocido enviado a la instancia
ios (6)
Esto definitivamente parece un problema "sobre lanzado".
La razón es difícil de decir en su ejemplo (ya que el código se ve absolutamente bien) pero el hecho de que esté copyWithZone
un selector copyWithZone
en una instancia de UILabel
(en lugar de UIColor
) definitivamente me dice que el bg
ha sido liberado y ahora se está refiriendo a un UILabel
.
Verifique que más adelante en el código no vuelva a liberar el objeto bg
.
Espero que esto ayude
EDITAR DESPUÉS DE SU PRIMER COMENTARIO
Es bastante extraño que copyWithZone unrecognized selector sent to instance
un copyWithZone unrecognized selector sent to instance
, porque creo que si tu self.view
fuera del tipo incorrecto (no una UIView
) recibirías un setBackgroundColor unrecognized selector sent to instance
y no un copyWithZone
.
Para analizar mejor este problema, cuando se produce la excepción, escribiría en el depurador:
po [self view]
po [[self view] backgroundColor]
para ver si todo está funcionando sin problemas como debería ser.
Siento que estoy golpeando mi cabeza contra la pared aquí (y estoy dispuesto a hacerlo, francamente).
Estoy tratando de establecer un fondo para la vista. El fondo que necesito establecer es una imagen y estoy usando este código (que funciona perfectamente bien en otras dos subclases de UIViewController, esto fue copiar / pegar en el nuevo archivo):
UIImage *img = [gameNode imageFromKey:@"background"];
UIColor *bg = [[UIColor alloc] initWithPatternImage:img];
self.view.backgroundColor = bg;
[bg release];
Como dije, esto funciona perfectamente bien en otros dos lugares, sin embargo aquí, la línea self.view.backgroundColor = bg
arroja
''NSInvalidArgumentException'', reason: ''-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x9259840''
No hay mucho más por lo que pasar. Verifiqué en IB que el punto de referencia de la vista de nivel superior está configurado para el propietario del archivo. Limpié el proyecto y reinicié. Incluso cerré Xcode y lo reinicié de nuevo, sin suerte. ¿Qué más me estoy perdiendo?
Editar: Como mencioné, no hay mucho seguimiento de la pila de respaldo, solo esto:
2012-05-28 13:13:56.997 OOKL[36012:17303] -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0
2012-05-28 13:13:56.997 OOKL[36012:17303] *** Terminating app due to uncaught exception ''NSInvalidArgumentException'', reason: ''-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0''
*** First throw call stack:
(0x2933052 0x44c7d0a 0x2934ced 0x2899f00 0x2899ce2 0x2935bd9 0xaa92dd 0x6a4f40 0x6a4eeb 0x6bfd60 0xc0191a 0x2934e1a 0x289e821 0xc0046e 0xaa7e2c 0xaa83a9 0xaa85cb 0xb2b59 0xb1969 0x2934ec9 0x9e55c2 0x9e555a 0xa8ab76 0xa8b03f 0xa8a2fe 0xa0aa30 0xa0ac56 0x9f1384 0x9e4aa9 0x2ac6fa9 0x29071c5 0x286c022 0x286a90a 0x2869db4 0x2869ccb 0x2ac5879 0x2ac593e 0x9e2a9b 0x214d 0x20c5)
Nada más, antes o después.
Me sale este error cuando declaro una variable IBOutlet, y le doy el mismo nombre que otra cosa en ese controlador de vista. Cambiar el nombre de mis variables y funciones de manera más sensata, por lo tanto, resolvió el problema
Prueba esto :
self.view.backgroundColor = [UIColor clearColor];
self.view.layer.backgroundColor = [[UIColor alloc] initWithPatternImage:img].CGColor;
Supongo que este fue uno de esos errores extraños con Xcode que no puedes rastrear ni reproducir cada vez. Reduje el problema a un UILabel específico en el IB. Tan pronto como lo conecto a un IBOutlet UILabel *
, IBOutlet UILabel *
este error.
En una investigación posterior, resulta que el title
nombre estaba causando el problema. Tuve la etiqueta declarada como
IBOutlet UILabel *title;
Tan pronto como cambié el nombre a gtitle
, todo funcionó como se esperaba. ¿Quién sabe?..
Tuve un problema similar que logré resolver usando las respuestas proporcionadas aquí.
En mi caso, sin embargo, tuve una clase llamada UIDateLabel (utilizada para presentar fechas de forma formateada, etc.). La compilación y ejecución dieron como resultado la NSInvalidArgumentException mencionada anteriormente.
Iba sospechando que tal vez hay una clase llamada así, pero buscar en Google en UIDateLabel solo mostró algunos hits oscuros (y ninguno que vincule a Apple como pude ver). Así que asumí que no había ningún problema de nombres por un tiempo ... hasta que leí las respuestas aquí y lo intenté.
Así que reemplacé el nombre a UIDateLabelAbc y todo funciona perfectamente. El cambio de nombre a UIDateLabel no funciona porque XCode me dice que ya hay una clase con ese nombre. Así que busqué más en Google y encontré alguna página wiki que afirma enumerar la jerarquía de herencia UIKit.framework, y en esa lista encontré UIDateLabel en la lista. Sin embargo, esa es toda la información que pude encontrar sobre esa clase, es decir, que existe. Lo que hace, su propósito, etc., sigue siendo desconocido para mí en este momento.
Actualización: Después de leer acerca de las convenciones de nombres, ahora me doy cuenta de que prefijar tus clases con UI no es una buena práctica (por decir lo menos). Por lo tanto, no agregue un prefijo a sus clases con UI y evitará esto y probablemente muchos otros problemas.
este problema me sucedió anoche y de hecho tenía una etiqueta llamada título. Me arranqué un poco de pelo cuando cambiar el nombre a algo más no funcionó. Resulta que estaba intentando enviar un valor NIL de un campo de texto a una etiqueta en un VC. Tengo 4 VC y un usuario ingresa un título en VC 1 en el campo de texto y se almacena en un objeto de tipo NSString. Esa cadena se coloca en una etiqueta en VC 4. Cuando un usuario no ingresa un título en VC 1, ahí es donde entró el NIL. Lo arreglé asignando un valor predeterminado al objeto de cadena cuando el usuario no ingresa un título en VC1. Espero que ayude a alguien.