Ist es möglich, die Superklasse eines Objekts zur Laufzeit zu ändern? Wenn ja, wie?
eine kurze Frage, eine kurze Antwort: ja, isa swizzling
Was macht Objective C dynamisch ?, Seite 66
Ein Beispiel:
Ich habe eine Klasse, die Verbindungen zu einer REST-API behandelt, sie heißt APIClient. Beim Testen möchte ich mich mit einem anderen Server verbinden.
Im Testziel habe ich APIClient
%Vor%In der Unit-Test-Klasse mache ich das Swizzling #import
%Vor%Dieser Fall ist sicher, da ich zuerst eine Unterklasse einer Basisklasse erstellt und diese dann durch die Unterklasse ersetzt habe. Da die Unterklasse auch eine Basisklasse ist, ist dies eine gültige Vererbung.
Es ist definitiv möglich, ObjC-Laufzeit zu verwenden, aber es wird etwas haarig sein ... Dies ist ein Link zu Apples Dokumentation: Objective-C Runtime und ein Anwendungsbeispiel: Objective-C Runtime-Programmierung .
Tags und Links objective-c runtime superclass