2014-01-07 165 views
0

我发现了几个解释如何解决这个问题,但没有一个(我发现)很简单,足以让我理解。 Objective-C新增全局变量不初始化

我正在寻找访问目标c中的多个类中的数组。我试图在“Globals.h”类中创建一个全局变量(我知道效率低下),在另一个类中初始化它们,并在另一个类中访问该信息。

继承人我有。

在Globals.h

#import <UIKit/UIKit.h> 

extern NSArray *globalRows; 

@interface Globals : NSObject 

@end 

ViewController.m

#import "Globals.h" 

-(void)initGlobal{ 
    globalRows = [[NSArray alloc] initWithArray:rows]; 
} 

编译器不希望初始化变量,我不明白为什么。

编辑:
Globals类只包含全局变量,这个类没有可执行代码。

我在ViewController中初始化的原因就是解析和存储需要的信息。

没有错误,代码将无法编译。

EDIT2:

看来我已经找到了一个很好的解释here

+0

你为什么要在另一个班上初始化它?至少在'Globals'类中调用方法... – Wain

+0

initGlobal中的代码是否曾经执行过?你有错误吗?请添加更多数据,以便您的问题可以有答案。 –

+0

编辑该问题。 – user3009729

回答

1

NSObject有一个+(void)初始化方法,您可以在启动过程中调用该方法。你也可以从main调用它。

尽管如此,更好的设计模式是让单身人士拥有你想要访问/使用的全球事物。同样,将这些东西放入应用程序委托中,可以使其成为有效的全局。

+0

单例方法似乎是更好的选择。这将工作与MutableArrays? – user3009729