2014-01-07 163 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