2011-10-06 49 views
0

在我的.m文件的頂部後會失去價值我有全球陣列退出方法

static NSMutableArray *name; 

我一堆值加載到我viewDidLoad方法在我的*姓名陣列。

我有一個滑塊,可以修改此數組內的值。滑塊方法僅在滑塊的值發生更改時調用。但是,我運行了這段代碼,每次我的程序退出viewDidLoad方法時,我都失去了添加到全局變量名稱的值。在退出viewDidLoad方法之前,我可以看到它們在那裏。

我在做什麼錯?

編輯:裏面viewDidLoad中

if (name == nil) 
    name = [NSMutableArray array]; 
UITextField *nameTemp = [[UITextField alloc] initWithFrame:CGRectMake(20,20,20,20)]; 
nameTemp.returnKeyType = UIReturnKeyDone; 
etc 
[self.view addSubview: nameTemp]; 
[name addObject:nameTemp] 
[nameTemp release]; 
+0

在'viewDidLoad'方法中發佈你正在做的事情的代碼。如果我沒有錯,你不會對'name'進行深層次的拷貝。或者有一個對局部變量的引用。 – Mahesh

+0

已發佈。建議? – Russell

+0

愚蠢的問題:1.你有沒有真正創建NSMutableArray? 2.你保留了NSMutableArray嗎? 3.你創建NSMutableArray的代碼(假設你這樣做)只執行一次,還是反覆執行它? –

回答

1

[NSMutableArray array]創建,顯然是在你的viewDidLoad方法結束被釋放的自動釋放陣列。嘗試使用[[NSMutableArray alloc] init][[NSMutableArray array] retain]並查看viewDidLoad返回後值是否仍然存在。

+0

明白了。我想我需要查看autoreleasing,因爲我不明白它。我會認爲將其宣佈爲全球性就足夠了。 – Russell

+1

嗯,我認爲可能是這樣。請記住,你所做的是聲明一個靜態變量*,它實際上是一個指向對象的指針,而不是靜態對象本身。變量的靜態性確保該變量在程序的整個生命週期內生存,但不能保證它引用的對象。 – Sean