如何在Objective C中声明全局变量

时间:2012-05-10 22:43:19

标签: objective-c ios global-variables

我查看过这里发布的大多数问题,但没有一个答案非常清楚,我对全局变量充满信心。

我在想的全局变量是,只是在

中声明的变量
    @interface HelloWorldLayer : CCLayer
{
   //global variable goes here
    NSString *string;
}

现在我可以在任何方法中使用此变量。

这是正确的还是我错了。

7 个答案:

答案 0 :(得分:5)

这不是“全局”变量。它是一个变量,仅作为HelloWorldLayer对象的实例成员变量可用。 对于xcode中的全局变量,请参阅此解决方案Global variable in Objective-C program

答案 1 :(得分:1)

这不称为全局变量。这是一个实例变量。但是,您可以在HelloWorldLayer实现中的每个实例方法中访问它。

答案 2 :(得分:1)

请查看here

您创建一个静态变量并通过静态访问器使用它。附:你必须导入存储静态变量#import "staticVarClass.h"的类,无论你需要在哪里使用它。

答案 3 :(得分:1)

如果你想在HelloWorldLayer之外访问它,你应该创建一个这样的属性

HelloWorldLayer.h

@interface HelloWorldLayer : CCLayer
{
    NSString *string;
}
// Declare variable to be used outside the layer here
@property(nonatomic, copy) NSString* string;
@end

HelloWorldLayer.m

@implementation HelloWorldLayer
@synthesize string; // This matches the property "string" with the variable "string"
...
@end

答案 4 :(得分:1)

要在C#中创建一个全局变量,有关如何执行此操作的答案在此处有关于Stackoverflow的另一篇文章:Global variable in Objective-C program

它声明:

对于标准全局变量,在终止并重新启动应用程序时不持久,  将其添加到您选择的头文件(* .h)中:

extern NSInteger MYGlobalVariable; 

然后将其放在实现文件(* .m,*。c,* .cpp)中:

MYGlobalVariable = 0; // Or ny other default value.

这就是你如何做一个面包和黄油的全局变量。

祝你的项目好运。

答案 5 :(得分:0)

如果你想要一个C全局变量(可以在整个应用程序中访问),你应该在任何接口声明或.h文件之外,以及在一个实现或.c文件中声明它。您必须在其他文件中将其声明为extern以使其在其他文件中可见。确保在声明中初始化它,因为默认情况下它不会。

请注意,以这种方式将Objective C对象指针(例如NSString *)声明为C全局变量会增加以不可重用或难以调试的代码结束的可能性。

答案 6 :(得分:0)

实际上,根据我的r& di得到的,通过使用extern,我们必须创建一个实例,但最后的事情是#define你的变量并且可以访问任何你想要的地方,而不需要创建实例和其他东西直接使用变量名称....