代码之家  ›  专栏  ›  技术社区  ›  teabot

这是什么样的目标C变量?

  •  3
  • teabot  · 技术社区  · 17 年前

    我正在通过一些我没有编写的Objective-C代码,找到一个我不熟悉的变量声明样式。有人能告诉我在下面的类实现中变量“myvar”的范围吗?注意,它出现在“.m”文件中,而不是接口声明中。

    @implementation MyClass
    @synthesize ivar1, ivar2;
    
    NSString* myVar; // <- What is the intent?
    
    - (id)init {
    
    ...
    
    @end
    

    在我看来,意图与成员变量的意图相似。用这种方式声明变量而不是在@interface声明中使用ivar有什么好处?

    3 回复  |  直到 17 年前
        1
  •  9
  •   Adam Rosenfield    17 年前

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

    extern NSString *myVar;
    

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

        2
  •  2
  •   kent    17 年前

    一个名称不好的全局变量…

        3
  •  1
  •   user119860    17 年前

    我在objc的经验不多,但我会说这是一个全球性的。