Je veux faire quelque chose un peu de hacky.
Lorsque nous essayons d'appeler une méthode sur une classe où n'est pas défini, nous obtenons généralement une erreur, par exemple P>
@implementation MyClass - (void) performSelector(SEL):selector { // Check if the method exists if (![self respondsToSelector:selector]) { // Handle unimplemeted selector NSLog(@"No method called %@", selector); } // Otherwise proced as normal else { [super performSelector:selector]; } } @end
4 Réponses :
Je suppose que vous pouvez essayer de créer une nouvelle catégorie pour "NsObject" et écraser cette méthode spécifique comme celle-là. Quoi qu'il en soit, gardez à l'esprit que Apple recommande d'utiliser des catégories pour écraser les méthodes, mais pour ajouter de nouvelles fonctionnalités, il est donc un peu piraté. Cependant, je ne suis pas sûr que cela se débarrasse de la préavis ... P>
Méthode de remplacement:
C'est ce que - [MyClass ne contient pasOrcognectelector:] code>
et appelez ce que vous voulez. p>
nsmanagedObject code> fait pour obtenir / définir les propriétés de données de base. p>
Pourquoi ne pas simplement remplacer le DONNOTECOREMIZELORYELLECTOR: CODE>
Méthode sur NsObject (en supposant que vous y hérissez, ce que vous devriez être)? P>
Parfait. C'est ce que je cherchais, je savais qu'il y aurait un moyen.
@PaulBiley Vous avez eu de la chance, 2 minutes après moi avec exactement la même réponse et votre réponse a été acceptée :)
Je ne suis pas clair si vous essayez d'intercepter des messages envoyés à une classe ou à une instance d'une classe. En tout état de cause, il s'agit peut-être d'examiner / rechercher des sujets de «transfert de message» et de «messages de transfert». Voir également le renvoi de NsObject et la section du Guide PGMG d'exécution d'Apple sur le renvoi des messages http://developer.apple.com/ Bibliothèque / Mac / # Documentation / Cocoa / Conceptuel / ObjcruntimeGuide / Articles / OCRTFORWARDING.HTML P>
Celles-ci m'ont obtenu la réponse que je cherchais et je ne les ai pas vues mentionnées ailleurs sur cette question. P>