我已经查看了这里发布的大多数问题,没有一个答案足够清晰,让我对全局变量充满信心。
我认为全局变量只是在
@interface HelloWorldLayer : CCLayer
{
//global variable goes here
NSString *string;
}
现在我可以在任何方法中使用此变量。
这是对的还是我错了。
这不是"全局"变量。它是一个变量,仅可用作HelloWorldLayer对象的实例成员变量。对于 xcode 中的全局变量,请参阅此解决方案 Objective-C program
这不称为全局变量。它是一个实例变量。但是,是的,您可以在HelloWorldLayer实现中的每个实例方法中访问它。
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
请看这里
您可以创建一个静态变量并通过静态访问器使用它。 附言您必须导入存储静态变量的类#import "staticVarClass.h"
您需要使用它的任何位置。
要像在 C# 中那样制作全局变量,有关如何做到这一点的答案在 Stackoverflow 的另一篇文章中: Objective-C 程序中的全局变量
它指出:
对于标准全局变量,在应用终止并重新启动时不持久, 将此添加到您选择的头文件 (*.h) 中:
extern NSInteger MYGlobalVariable;
然后将其放入实现文件 (*.m, *.c, *.cpp):
MYGlobalVariable = 0; // Or ny other default value.
这就是你如何做一个面包和黄油全局变量。
祝你的项目好运。
如果你想要一个 C 全局变量(可在整个应用程序中访问),你应该在任何接口声明或 .h 文件之外声明它,并且只在一个实现或 .c 文件中声明它。 您必须在其他文件中声明它 extern 才能使其在其他文件中可见。 确保在声明中初始化它,因为默认情况下不会初始化它。
请注意,以这种方式将目标 C 对象指针(如 NSString *)声明为 C 全局变量会增加最终出现不可重用或难以调试的代码的机会。
实际上根据我的研发,我得到通过使用extern我们必须创建一个实例,但最后的事情是 #define 你的变量,可以访问任何你想要的地方,而无需创建任何实例和其他东西,只需直接使用变量的名称....