Objective-C类实现中的C函数和变量?

js_*_*js_ 5 c compiler-construction objective-c

我可以在Objective-C类实现中定义c函数和变量,如下所示:

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    cfunction();
}

// variable inside class
NSString *message = @"this is c function inside objective-c class";

// c function inside class
void cfunction() {
    NSLog(@"%@", message);
}

@end
Run Code Online (Sandbox Code Playgroud)

结果

this is c function inside objective-c class
Run Code Online (Sandbox Code Playgroud)

此代码无需任何警告和错误即可运行.
它是有效的Objective-C代码吗?
在Objective-C类中定义变量和c函数是否安全?
是否有关于此语言规范的文档?

kub*_*uba 3

是的,这是正确且安全的,但你应该尽量避免它。如果您需要一些 C 函数,请在单独的文件中定义它(并在单独的头文件中声明它)。

从技术上讲,Obj-C 是 C 语言之上的一个薄层,您可以在 Obj-C 源代码中的任何位置使用任何 C 功能。但是,您应该遵循编码风格,而不是混合使用两种语言。