Alternativa a poseAsClass in Mac OS X 10.5 e superiore?
-
18-09-2019 - |
Domanda
NSObject
Apple ha deprecato metodo poseAsClass:
per OS X v10.5 e sopra. C'è un altro modo per rendere il lavoro di classe in posa?
Soluzione
Non credo che ci sia un a livello di classe equivalente, ma è possibile scambiare l'attuazione di due metodi, che spesso era lo scopo di utilizzare poseAsClass:
(naturalmente, è possibile scambiare più di un metodo se è necessario eseguire l'override più metodi in una classe). Si vuole method_exchangeImplementations 2.0 nel runtime Objective-C (#import objc/runtime.h
). Una parola di avvertimento:. Dopo la chiamata method_exchangeImplementations, chiamando il metodo 'nuova' chiama in realtà la definizione di un metodo originale
Altri suggerimenti
Lap Cat dà un'alternativa.
Che cosa stai cercando di fare? Ci sono spesso modi per aggirare in posa. Ammetto, però, che a volte è l'unico modo:)