注意:这是为了自我启发。
情景:
我创建了一个Objective-C对象,在其中我称之为标准C函数。
场景#1:(C函数外部一个ObjC对象):
#import "ViewController.h"
void SayHello() {
int x = 12345;
char *y = "Greetings";
printf("%s: The value of x: %i", y, x);
}
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
SayHello();
[super viewDidLoad];
}
@end
场景#2:(C函数在 ObjC对象中):
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
void SayHello() {
int x = 12345;
char *y = "Greetings";
printf("%s: The value of x: %i", y, x);
}
- (void)viewDidLoad {
SayHello();
[super viewDidLoad];
}
@end
问题:
除范围外,这两种情况是否有所不同?
答案 0 :(得分:0)
没有区别,甚至范围也没有变化。 ObjC允许您从ObjC方法中调用可见的C函数,您可以在任何地方定义这些函数;它们不受ObjC范围的语法的影响,在这个意义上总是“全局的”。
我已经看到C函数故意在ObjC类实现的“内部”或“外部”定义为一种风格方式,表明该函数是(或不是)由一个类“私下”使用。但实际范围不会改变。
如果您希望C函数在.m
文件之外不可见,请在其声明中使用static
关键字将其实际范围限制为该编译单元(这是C事物,而不是ObjC的事)。