J'ai une application qui semble fonctionner sans problème en utilisation normale. L'analyseur statique Clang ne signale aucun problème non plus. Lorsque j'essaie de l'exécuter dans Instruments, il échoue avec une exception de sélecteur non reconnue.L'application iPhone fonctionnant dans Instruments échoue avec un sélecteur non reconnu
La ligne incriminée est un simple poseur de propriété du formulaire:
self.bar = baz;
Pour comprendre ce qui se passe, j'ai ajouté un NSLog() appelez immédiatement au-dessus:
NSLog(@"class = %@ responds = %d", [self class], [self respondsToSelector:@selector(setBar:)]);
self.bar = baz;
Sur la émulateur (sans instruments) et sur un périphérique, cela montre exactement ce que je m'attendais:
class = Foo répond = 1
Lors de l'exécution en vertu des instruments, je reçois:
class = Foo répond = 0
Je suis perplexe quant à ce qui pourrait causer cela. Peut-être un emplacement de mémoire différent est-il attaqué quand il est dans l'environnement Instruments? Quelqu'un peut-il suggérer comment je pourrais déboguer cela?
Cela ne notifiera aucun observateur de la propriété, et il est possible que la barre ne soit même pas directement implémentée en tant que variable d'instance. Il peut être synthétisé à partir d'autres valeurs. Par exemple, une propriété "fullname" peut être stockée dans les ivars "firstname" et "lastname" et ne pas avoir d'ivar directement sauvegardé. –