1

我已经查看了此处发布的大多数问题,但没有一个答案非常清楚,足以让我对全局变量充满信心。

我在想一个全局变量,只是一个在

    @interface HelloWorldLayer : CCLayer
{
   //global variable goes here
    NSString *string;
}

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

这是正确的还是我错了。

4

7 回答 7

5

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

于 2012-05-10T22:48:34.523 回答
1

要在 C# 中创建一个全局变量,如何做到这一点的答案在 Stackoverflow 上的另一篇文章中:Objective-C 程序中的全局变量

它指出:

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

extern NSInteger MYGlobalVariable; 

然后将其放入实现文件(*.m、*.c、*.cpp)中:

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

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

祝你的项目好运。

于 2013-06-16T21:48:22.250 回答
1

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

于 2012-05-10T22:46:24.247 回答
1

请看这里

您创建一个静态变量并通过静态访问器使用它。#import "staticVarClass.h"PS您必须在需要使用它的任何地方导入存储静态变量的类。

于 2012-05-10T22:48:55.920 回答
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
于 2012-05-10T22:50:21.427 回答
0

If you want a C global variable (accesible throughout the entire application), you should declare it outside any interface declaration or .h file, and in exactly one implementation or .c file. You will have to declare it extern in other files to make it visible in other files. Make sure to initialize it in the declaration, since it won't be by default.

Note that declaring an Objective C object pointer (such as an NSString *) as a C global variable in this manner increases the chances of ending up with un-reusable or hard-to-debug code.

于 2012-05-10T23:34:06.373 回答
0

实际上,根据我的研发,我通过使用 extern 我们必须创建一个实例,但最后一件事是#define 你的变量,并且可以访问你想要的任何地方,而无需创建任何实例和其他东西,只需按其名称直接使用变量……

于 2013-08-17T05:51:30.557 回答