我正在通过一些我没有编写的Objective-C代码,并找到了一个我不熟悉的变量声明样式.谁能告诉我下面的类实现中变量'myVar'的范围?请注意,它出现在'.m'文件中,而不是接口声明中.
@implementation MyClass
@synthesize ivar1, ivar2;
NSString* myVar; // <- What is the intent?
- (id)init {
...
@end
Run Code Online (Sandbox Code Playgroud)
对我来说,意图似乎与成员变量的意图类似.以这种方式声明变量而不是在@interface声明中使用ivar有什么好处?
它只是一个普通的旧全局变量.它只有一个实例,它可以被同一文件转换单元中的任何代码访问(运行预处理器后得到的最终文件).其他翻译单元(即其他.m文件)也可以访问该全局变量,但为了这样做,他们需要使用一个extern语句:
extern NSString *myVar;
Run Code Online (Sandbox Code Playgroud)
extern说"这是全局变量的名称,但它是在不同的翻译单元中定义的".链接器extern在链接时解析所有声明.
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |