Apple a désapprouvé la méthode poseAsClass:
de NSObject
pour OS X v10.5 et supérieur. Existe-t-il un autre moyen de faire travailler le poseur de classe?Alternative à poseAsClass dans Mac OS X 10.5 et supérieur?
Répondre
Je ne pense pas qu'il existe un équivalent de classe, mais vous pouvez échanger l'implémentation de deux méthodes, ce qui était souvent le but de l'utilisation de poseAsClass:
(bien sûr, vous pouvez échanger plus d'une méthode si vous avez besoin de remplacer plusieurs méthodes dans une classe). Vous voulez method_exchangeImplementations dans le runtime Objective-C 2.0 (#import objc/runtime.h
). Un mot d'avertissement: après l'appel de method_exchangeImplementations, l'appel de la méthode 'new' appelle la définition de la méthode d'origine.
Qu'est-ce que vous essayez de faire? Il y a souvent des façons de poser. Je concéderai, cependant, que c'est parfois le seul moyen :)
J'essaie de garder une trace de tous les messages de liaison (et de déconnexion) dans une application Cocoa. Je veux 'NSLog()' certaines informations de débogage chaque fois qu'une liaison est faite entre un objet et un autre. J'ai fini par utiliser 'method_exchangeImplementations' sur les méthodes de liaison pour' NSObject', et cela a fait l'affaire. –
On dirait que vous faites bien :) Je serais méfiant de le faire dans le code de livraison. –
- 1. Alternative à FinalBuilder pour Mac OS X?
- 2. SWT et Java WebStart sous Mac OS X 10.5
- 3. Autorisations par défaut de/dev sur Mac OS X 10.5. *
- 4. Comment configurer PEAR sur Mac OS X 10.5 Leopard
- 5. Paperclip, Rails 2.3.3 et Mac OS X
- 6. Ajustements Swing pour Mac OS X
- 7. Qt4Dotnet sur Mac OS X
- 8. Mac OS X: charge moyenne
- 9. Glassfish se bloque sur OS X 10.5/Java 6
- 10. Erreur lors de l'installation de PostgreSQL sur Mac OS X 10.5 en utilisant MacPorts
- 11. Déterminer processus à Darwin Information Programmatically/Mac OS X
- 12. Existe-t-il une alternative à RawInput sous Mac OS X/Linux?
- 13. Sur Mac OS X 10.5, qu'est-ce qui détermine la valeur PATH avant/etc/profile?
- 14. Subversion: erreur sur la caisse - Mac OS 10.5
- 15. Erreur lors du démarrage de mysql sous Mac OS 10.5
- 16. installe sqlite3 sur mac os x?
- 17. L'Apple Mac OS X est-il gratuit?
- 18. libxml2-p25 sur OS X 10.5 a besoin de sudo?
- 19. Oracle sur Mac OS X Snow Leopard
- 20. Comment désinstaller MySQL de Mac OS X?
- 21. Application bundle Mac OS X Leopard
- 22. Applet 1.6 sur Mac OS X
- 23. Échange de vue Mac OS X
- 24. Pas de détection Sous Mac OS X
- 25. Où et comment définir l'environnement DYLD sous Mac OS X
- 26. Utiliser virtualenv sous Mac OS X
- 27. Interrogation Mac OS X Spotlight de Java
- 28. Vim Mode d'insertion sur Mac OS X
- 29. Où est PyGTK pour Mac OS X?
- 30. Haskell, HDBC, ODBC, MySQL et Mac OS X
Merci! J'ai réussi à faire en sorte que cela fonctionne, en utilisant une combinaison de la réponse de mcandre et de la documentation à laquelle vous vous êtes connecté. Une note rapide: J'ai dû '#include 'objc/runtime.h" 'afin d'utiliser les méthodes que vous décrivez. –