Wenn Sie eine Verknüpfung mit Cocoa oder Foundation-Frameworks herstellen, können Sie in Ihrem C-Code objective-c verwenden. Wenn Sie jedoch die normale Nachrichtensyntax verwenden möchten, müssen Sie die Dateierweiterung von .c in .m ändern, damit sie als objective-c kompiliert wird. Wenn Sie die Erweiterung .c beibehalten, können Sie nur die c-style-Laufzeitaufrufe verwenden, um mit Zielobjekten zu interagieren (z. B. objc_msgSend
, objc_getClass
usw.).
Beispiele: Innerhalb einer .m Datei
%Vor%Innerhalb einer .c-Datei
%Vor%Wenn Sie die zweite Methode wählen, finden Sie die Objective-C-Laufzeitreferenz .
Objective-C ist ein sehr dünner Wrapper über C. Der Compiler übersetzt nur
%Vor%in einen C-Anruf
%Vor% und das ist es (wobei @selector(message:)
eine magische Kodierung ist, die einen Selektor (Methodenname) in ein computerverständliches Ding verwandelt.)
Aus Sicht des Compilers gibt es daher zwischen Objective-C und C keinen großen Unterschied. Beispielsweise können Sie ein reines C-Programm mit einem Objective-C-Compiler mit genau dem gleichen Ergebnis kompilieren, wie Sie es mit einem C-Compiler kompilieren würden.
Der einfachste Weg also, ein Bit von Objective-C mit C zu mischen, ist die Verwendung von .m
extension, so dass der Compiler Objective-C verwendet.
Das macht Ihr Programm nicht plötzlich sehr Objective-C-y. Sie können Ihr Programm fast rein C behalten, mit der Erweiterung .m
. Mit .m
können Sie einige Zeilen Objective-C-Nachrichtenaufrufe ohne Probleme hinzufügen.