Wie kompiliert Objective-C?

7

Ich bin nur neugierig, kompiliert Objective-C in C-Code oder funktioniert die Objective-C-Laufzeit wie eine Abstraktionsschicht über dem Programm? Sorry im Voraus, wenn ich nicht weiß, wovon ich spreche!

    
user3318845 06.03.2014, 19:49
quelle

3 Antworten

8

Das Kompilieren von Objective-C in C macht keinen Sinn, weil dann der C-Code analysiert und kompiliert werden müsste.

Objective-C wird in Maschinencode kompiliert. Denken Sie daran, dass die Sprache (Objective-C, C, C ++) nur die Regeln zum korrekten Schreiben von Code definiert. Der Compiler überprüft, ob Ihr Code korrekt ist und kompiliert ihn, d. H. Übersetzt ihn in ausführbaren Code .

Verwechsle auch nicht die Objective-C-Sprache und die Objective-C-Laufzeit. Die Sprache definiert die Syntax, die Laufzeit lässt den kompilierten Code laufen (in gewisser Weise ist es wie du sagst, es ist eine Ebene, aber es wird nicht jedes Mal mit deinem Programm kompiliert).

BEARBEITEN:
Die Laufzeit implementiert das Kernverhalten einer Computersprache. Die Laufzeit enthält kompilierten Funktionscode in ähnlicher Weise wie eine Bibliothek. In C zum Beispiel, wenn Sie printf() aufrufen, wird Ihr Code in Maschinencode und verknüpft mit der Bibliothek kompiliert, die die Implementierung dieser Funktion enthält. Was dieser Maschinencode tut, übergibt Parameter an den ausführbaren Code in der Bibliothek.

    
Merlevede 06.03.2014, 20:01
quelle
13

Eine kleine Geschichtsstunde:

Sowohl C ++ als auch Objective C haben ursprünglich als Präprozessoren für C begonnen. Sie haben also Ihren ObjC-Code eingegeben und würden effektiv nach dem Code suchen und ihn ersetzen und die Objective-C-Befehle in geraden C-Code übersetzen benutzte eine kleine Hilfsbibliothek (das Zeug in objc / runtime.h und ähnliche Dateien).

Als die Sprache immer komplexer wurde, wurde sie in einen vollständigen Parser umgewandelt, der den Parser in einem C-Compiler mit / in einen spezifischen für Objective-C ersetzte / erweiterte. Während es also durchaus möglich wäre, Objective-C in Straight-C zu kompilieren, machen aktuelle ObjC-Compiler das nicht mehr.

    
uliwitness 06.03.2014 20:14
quelle
0

Streng von Xcode kommend, wird der Code mit dem LLVM-Compiler kompiliert. Hier finden Sie weitere Informationen zum LLVM-Compiler. Sie können mehr Informationen darüber finden, wie der LLVM-Compiler durch einfache Google-Suchen online funktioniert.

    
James Harnett 06.03.2014 19:55
quelle