【问题标题】:What class of Objective-C variable is this?这是什么类的 Objective-C 变量?
【发布时间】:2009-06-09 14:06:06
【问题描述】:

我正在研究一些不是我编写的 Objective-C 代码,并且发现了一种我不熟悉的变量声明样式。谁能告诉我下面的类实现中变量“myVar”的范围?请注意,这出现在“.m”文件中,而不是接口声明中。

@implementation MyClass
@synthesize ivar1, ivar2;

NSString* myVar; // <- What is the intent?

- (id)init {

...

@end

对我来说,其意图似乎类似于成员变量的意图。以这种方式声明变量而不是在@interface 声明中使用 ivar 有什么好处?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    它只是一个普通的旧全局变量。它只有一个实例,同一文件翻译单元(运行预处理器后获得的最终文件)中的任何代码都可以访问它。其他翻译单元(即其他 .m 文件)也可以访问该全局变量,但为此,它们需要使用 extern 语句:

    extern NSString *myVar;
    

    extern 表示“这是一个全局变量的名称,但它是在不同的翻译单元中定义的”。链接器在链接时解析所有 extern 声明。

    【讨论】:

      【解决方案2】:

      一个命名不佳的全局变量...

      【讨论】:

      • 为了公平对待原始程序员 - 为了这篇文章的目的,我确实将变量重命名为通用名称。
      【解决方案3】:

      我在 ObjC 方面不是很有经验,但我会说这是一个全球性的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 2015-12-16
        • 2011-09-14
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多