2012-05-24 16 views
0

我想保存的圖像中的NSMutable陣列,它不工作無法將圖像存儲在一個NSMutableArray

這裏是執行此行中我發現後,我在做什麼

[imagesList addObject:[UIImage imageNamed:@"b.png"]]; 

那對象的數量仍然是0 任何原因?

感謝

我repeate在幾個方面驗證碼:

在全球範圍內,我宣佈:

NSMutableArray *imagesList; 
NSUserDefaults *imagesHistory; 
在我viewDidLoad方法

我寫:

imagesHistory=[NSUserDefaults standardUserDefaults]; //imagesHistory is created globallt as NSUserDefault imagesHistory 
[imagesHistory setObject:imagesList forKey:@"images history"]; 

UIImage *image; 
image=[UIImage imageNamed:@"b.png"]; 

[imagesList addObject:image]; 
imagesHistory=[NSUserDefaults standardUserDefaults]; 
[imagesHistory setObject:imagesList forKey:@"images history"]; 

,並在didFinishLaunchingWithOptions我寫道:(儘管我在添加s時不需要這樣做trings ...)

imagesList = [[NSMutableArray alloc] init]; 
+2

您是否嘗試過做一個單獨的行形象,看它是否是'nil'與否?你確定'imageList'已被正確分配和初始化嗎? –

+1

無法加載圖像(沒有b.png)或者imageList實際上不可變。 – DrummerB

+0

@DanF:我做了兩行(我將一個UIImage變量分配給它的圖像,我可以看到內存被分配給這個變量),然後我將它添加到NSMUtablearray中,但仍然沒有添加對象。 imagesList是一個全局變量,根據經驗我不需要初始化和分配它,或者我錯過了什麼? – user1415780

回答

3

不管它是一個全局變量或沒有,你仍然需要調用allocinit某處的對象。如果你打算用它在你的應用程序,然後appDidFinishLaunchingWithOptions是一個體面的地方加入這一呼籲:

imagesList = [[NSMutableArray alloc] init]; 
+0

我按照說明添加了這一行,但對象的數量仍然是零... – user1415780

+0

您是否有更多的代碼行要顯示,圍繞您將對象添加到哪裏看看你是如何確定數組中的對象的數量?另外,你的'imagesList'的聲明是有用的信息 –

+0

我編輯了我的問題以顯示更多代碼 – user1415780

0

你分配/ INITING imagesList後,您嘗試添加的對象。在添加任何內容之前,您需要分配/ init imageList

爲了確保它的存在,嘗試這樣的事情:

if (!imagelist) imageList = [[NSMutableArray alloc] init];

如果它存在,而你仍然有這個問題,它可能是你分配/ INITING一個新的NSMutableArray和在添加對象後將其分配給imageList。這意味着舊數組將被丟棄,並且您將剩下一個零項爲新數組。

+0

我遵循你的建議,並嘗試在應用程序委託中添加此行,並且在添加對象之前仍然遇到同樣的問題... – user1415780

+0

是否可能您正在分配/啓動太多時間?看到我更新的答案。 –

+0

我檢查了它,我只分配了一個變量。 我也做了一個小測試,發現如果我將addobject中的圖像更改爲字符串,它的工作原理完全正常...... – user1415780

1

您的空數組是否被保留?如果你不使用自動引用計數,還有就是你初始化數組具有以下

imagesList = [[NSMutableArray alloc] init]; 

一個很好的機會,但它沒有被保留。您需要保留空數組,以便將其附加到代碼中。

imagesList = [[[NSMutableArray alloc] init] retain]; 

只是不要忘記釋放數組的時候,你都在用它做,在viewDidUnload或無論是適當的。

+0

我使用ARC所以不需要保留(我試圖添加「保留」,它不允許我)... – user1415780

0

嘗試UIImageView *image; image=[UIImage imageNamed:@"b.png"];

此外,在@property(nonatomic,retain)使用「強」,而不是「保留」