Ändern Sie dynamisch die Oberklasse eines Objekts

8

Ist es möglich, die Superklasse eines Objekts zur Laufzeit zu ändern? Wenn ja, wie?

    
AndrewShmig 25.02.2013, 05:22
quelle

2 Antworten

11

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.

    
vikingosegundo 25.02.2013, 05:24
quelle
2

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 .

    
Vineet Singh 25.02.2013 05:43
quelle

Tags und Links