Ho creato una libreria statica per ospitare alcune delle mie categorie di codice.Il metodo di chiamata sulla categoria inclusa nella libreria statica di iPhone causa NSInvalidArgumentException
Ho una categoria per le visualizzazioni di UIView in "UIView-Extensions.h" con estensione.
In questa categoria ho un metodo chiamato:
- (void)fadeOutWithDelay:(CGFloat)delay duration:(CGFloat)duration;
si chiama questo metodo funziona bene sul simulatore in configurazione di debug.
Tuttavia, se tenta di eseguire l'applicazione sul dispositivo ottengo 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
Sembra per qualche ragione UIView-Extensions.h non viene incluso nel dispositivo costruisce.
Quello che ho controllato/provato
ho cercato di includere un'altra categoria per NSString, e ha avuto lo stesso problema.
Altri file, come intere classi e funzioni funzionano bene. È un problema che solo accade con le categorie.
Ho fatto un pulito tutti i target, che non ha risolto il problema.
Ho controllato il progetto della libreria statica, le categorie sono incluse nei gruppi "headers" e "compilare sources" del target.
La libreria statica è inclusa nel progetto principale "link binary with library" group.
Un altro progetto che ho aggiunto alla libreria statica funziona perfettamente.
ho cancellato e ri-aggiunta la libreria statica senza fortuna
-ObjC bandiera del linker è impostato
Tutte le idee?
uscita 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
Che cosa dice, in particolare, il messaggio di eccezione? –
L'ho aggiunto alla domanda –
ho trovato interessante questa parte della tua domanda 'le categorie sono incluse nei gruppi" headers "e" compilation sources "del target. .. tipicamente le categorie sono * non * chiamate da progetti contenenti il ha detto la libreria statica .. perché dovrebbe essere inclusa nella sezione 'copia intestazioni? Apple non ne fa menzione nel suo [tutorial] pubblicato di recente (http://developer.apple.com/library/ios/technotes/iOSStaticLibraries/iOSStaticLibraries.pdf) – abbood