2011-06-03 35 views
0

噸,但沒有他們的答案似乎回答我...的NSMutableArray ADDOBJECT凍結我的應用程序類似的問題

我創建我的數組這樣:

imgArray = [NSMutableArray arrayWithCapacity:10]; 

後來(在另一個函數)我試圖將一個對象添加到它:

Attachment newAttachment = [[[Attachment alloc] init] autorelease]; 
newAttachment.fileName = filename; 
newAttachment.file = file; 
[imgArray addObject:newAttachment]; 

這將導致iPhone應用程序凍結起來。模擬器似乎很好;狀態欄上的時鐘不停地滴答滴答,我沒有收到任何錯誤消息,但我的應用程序不再響應。

我在做什麼錯?

+0

我試着註釋掉只是最後一行,以及應用程序運行正常,當它不存在。 – bdares 2011-06-03 08:34:51

+0

你能上傳附件.H和init方法的代碼?但我的第一個目標可能是真的很大,並且你有內存問題。 – Roger 2011-06-03 08:37:27

+0

@Roger它基本上爲NSData的包裝,但有保存文件名的NSString。我附上小照片。 – bdares 2011-06-03 09:31:11

回答

1

只是做

imgArray = [[NSMutableArray arrayWithCapacity:10] retain]; 

所有類的方法,如果返回一個對象,具有保持數1和對象已經在自動釋放池,因此,如果想使用該對象超出了當前的工作阻止你應該始終保留一個返回因爲然後引用在塊外部丟失。

+0

這工作!我會擔心它發生的內存問題。 – bdares 2011-06-03 09:41:24

2

看來你是不保留imgArray。你是?嘗試,

imgArray = [[NSMutableArray alloc] initWithCapacity:10] 

如果不是。

+0

我對於ObjC來說真的很陌生,對於C也沒什麼經驗,所以我不明白它應該做什麼。它似乎不工作(應用程序未能加載'...未捕獲的異常'NSInvalidArgumentException',原因:'*** - [__ NSPlaceHolderArray arrayWithCapacity:]:無法識別的選擇器發送到實例0x3d05e40' – bdares 2011-06-03 09:40:32