如何在目标 C 中声明全局变量



我已经查看了这里发布的大多数问题,没有一个答案足够清晰,让我对全局变量充满信心。

我认为全局变量只是在

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

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

这是对的还是我错了。

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

如果你想在

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 你的变量,可以访问任何你想要的地方,而无需创建任何实例和其他东西,只需直接使用变量的名称....

相关内容

  • 没有找到相关文章

最新更新