Wie funktioniert Objective-C eine dynamische runtime?
Wie funktioniert Objective-C eine "dynamische" - Laufzeit? Was bedeutet "dynamisch" finden Sie hier?
- 1: Objective-C macht starken Gebrauch der Hülsen, so dass nicht jedes element ist ein Objekt. 2: Objekte, die nicht eine Sprache dynamisch, es ist die Funktionen/Methoden, die auf Objekte. Deine Beschreibung erklärt, warum Objective-C wird als "objektorientierte" Sprache.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In einem Satz: Objective-C entscheidet, welche Methode Umsetzung aufrufen, rechts, bevor Sie dies tun (während der Laufzeit). Die Idee ist, dass die Verbindung zwischen den Namen der Methode und der Umsetzung ist dynamisch. C++ zum Beispiel tut dies während der Kompilierung.
Beispiel:
In diesem Beispiel die
intValue
Nachricht zuerst an eine Instanz vonNSString
und dann zu einemNSNumber
. Der code emittiert, der compiler ist bei beiden identisch telefonieren–in der Tat nicht der compiler auch wissen, um welche Art von Objekt es ist das senden von Nachrichten (wie der Typ istid
).Die Laufzeit entscheidet sich, welche Implementierung zu rufen, um zu extrahieren, die einen int-Wert aus einem string-oder einem
NSNumber
.Dynamischen Begriff referes, um die Bindung mit den virtuellen Tischen.Auch bekannt als die späte Bindung, wenn die Bindung erfolgt zur compile-Zeit, dann ist es nicht wichtig, was der Reale Gegenstand, der die Nachricht empfängt, aber das wichtige ist die Art der Referenz auf dieses Objekt.Mit der späten Bindung statt, die wichtig ist, ist das Objekt (und ich persönlich bevorzuge die späte Bindung), so dass, wenn Sie eine Methode überschreiben, dies wird aufgerufen, für sicher, wenn das Objekt gehört zu dieser Klasse.Betrachten Sie diese Klasse:
Wenn Sie versuchen, sich die Beschreibung:
Diese Protokolle "Ein guter Mensch, smart, aber faul".Falls die Bindung mit der virtuellen Tabelle war statisch, es wurde verwendet, die Beschreibung der Methode der Oberklasse NSObject, so würden Sie sehen, nur die Adresse des Objekts zwischen geschweiften Klammern:
In C++ ist die statische Bindung, sehr ärgerlich, dass meine persönlichen opinion.Java und Objective-C sind dynamisch.