Cocoa-APIs von C aufrufen

8

Ich weiß nicht, ob das möglich ist, aber Code in Plain C, ist es möglich, Cocoa-APIs davon aufzurufen?
So etwas wie #include <cocoa.h> , füge die entsprechende Bibliothek hinzu und geh dafür?

Danke für die Hilfe

    
Mr Aleph 05.05.2011, 17:02
quelle

2 Antworten

13

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 .

    
ughoavgfhw 05.05.2011, 17:24
quelle
4

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.

    
Yuji 05.05.2011 17:28
quelle

Tags und Links