He creado una biblioteca estática para albergar algunos de mis códigos como categorías.El método de llamada en la categoría incluida desde la biblioteca estática del iPhone causa NSInvalidArgumentException
Tengo una categoría para UIViews en "UIView-Extensions.h" llamadas Extensiones.
En esta categoría tienen un método llamado:
- (void)fadeOutWithDelay:(CGFloat)delay duration:(CGFloat)duration;
llamada a este método funciona bien en el simulador de la configuración de depuración.
Sin embargo, si intenta ejecutar la aplicación en el dispositivo consigo un NSInvalidArgumentException:
[UIView fadeOutWithDelay:duration:]: unrecognized selector sent to instance 0x1912b0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView fadeOutWithDelay:duration:]: unrecognized selector sent to instance 0x1912b0
Parece por alguna razón UIView-Extensions.h no se incluye en el dispositivo construye.
Lo que he comprobado/intentado
Traté de incluir otra categoría para NSString, y tenía el mismo problema.
Otros archivos, como clases y funciones completas funcionan bien. Es un problema que solo sucede con las categorías.
Hice todos los objetivos limpios, lo que no solucionó el problema.
Revisé el proyecto de biblioteca estática, las categorías se incluyen en los grupos "copiar encabezados" y "compilar fuentes" del destino.
La biblioteca estática se incluye en el grupo principal de proyectos "enlace binario con biblioteca".
Otro proyecto al que he agregado la biblioteca estática funciona muy bien.
He eliminado y volver a agregar la biblioteca estática sin suerte
bandera enlazador -ObjC se establece
¿Alguna idea?
salida nm
libFJSCodeDebug.a(UIView-Extensions.o):
000004d4 t -[UIView(Extensions) changeColor:withDelay:duration:]
00000000 t -[UIView(Extensions) fadeInWithDelay:duration:]
000000dc t -[UIView(Extensions) fadeOutWithDelay:duration:]
00000abc t -[UIView(Extensions) firstResponder]
000006b0 t -[UIView(Extensions) hasSubviewOfClass:]
00000870 t -[UIView(Extensions) hasSubviewOfClass:thatContainsPoint:]
000005cc t -[UIView(Extensions) rotate:]
000002d8 t -[UIView(Extensions) shrinkToSize:withDelay:duration:]
000001b8 t -[UIView(Extensions) translateToFrame:delay:duration:]
U _CGAffineTransformRotate
000004a8 t _CGPointMake
U _CGRectContainsPoint
U _NSLog
U _OBJC_CLASS_$_UIColor
U _OBJC_CLASS_$_UIView
U ___CFConstantStringClassReference
U ___addsf3vfp
U ___divdf3vfp
U ___divsf3vfp
U ___extendsfdf2vfp
U ___muldf3vfp
U ___truncdfsf2vfp
U _objc_enumerationMutation
U _objc_msgSend
U _objc_msgSend_stret
U dyld_stub_binding_helper
¿Qué dice específicamente el mensaje de excepción? –
Lo agregué en la pregunta –
encontré interesante esta parte de su pregunta 'las categorías están incluidas en los grupos de" encabezados de copiado "y" fuentes de compilación "del objetivo. .. típicamente las categorías son * no * llamadas por proyectos que contienen el dicha biblioteca estática ... ¿por qué debería incluirse en la sección 'copiar encabezados'? Apple no hace mención de ello en su [tutorial] recientemente publicado (http://developer.apple.com/library/ios/technotes/iOSStaticLibraries/iOSStaticLibraries.pdf) – abbood