需要澄清从对象

时间:2016-04-29 19:29:51

标签: objective-c

注意:这是为了自我启发。

情景:
我创建了一个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

问题:
除范围外,这两种情况是否有所不同?

1 个答案:

答案 0 :(得分:0)

没有区别,甚至范围也没有变化。 ObjC允许您从ObjC方法中调用可见的C函数,您可以在任何地方定义这些函数;它们不受ObjC范围的语法的影响,在这个意义上总是“全局的”。

我已经看到C函数故意在ObjC类实现的“内部”或“外部”定义为一种风格方式,表明该函数是(或不是)由一个类“私下”使用。但实际范围不会改变。

如果您希望C函数在.m文件之外不可见,请在其声明中使用static关键字将其实际范围限制为该编译单元(这是C事物,而不是ObjC的事)。