我不知道这是否可行,但是用纯C语言编写代码,是否可以从中调用Cocoa API?
#include <cocoa.h>一样,添加相应的库并继续使用?

谢谢您的帮助

最佳答案

如果链接到Cocoa或Foundation框架,则可以在C代码中使用Objective-c。但是,如果要使用普通的消息传递语法,则必须将文件扩展名从.c更改为.m,以便将其编译为Objective-c。如果保留.c扩展名,则只能使用c风格的运行时调用与目标对象(即objc_msgSendobjc_getClass等)进行交互。

示例:.m文件中

void cFunction() {
    [[NSString alloc] init];
}


在.c文件中

void cFunction() {
    void* cls = objc_getClass("NSString");
    void* obj = objc_msgSend(cls, NSSelectorFromString(CFSTR("alloc")));
    obj = objc_msgSend(obj, NSSelectorFromString(CFSTR("init")));
}


如果选择第二种方法,请参见Objective-C Runtime Reference

关于c - 从C调用Cocoa API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50662715/

10-12 16:15
查看更多