2012-09-05 34 views
7

後,我想將一個對象添加到一個NSMutableArray:NSMutableArray裏是空的ADDOBJECT

NSLog(@"Object text: %@", object.text); 
NSLog(@"Object: %@", object); 
[appdelegate.objects addObject:object]; 
NSLog(@"Objects array size: %i", [appdelegate.objects count]); 

這是輸出:

Object text: This is the text 
Object: <Object: 0x6e762c0> 
Objects array size: 0 

這怎麼可能,我想補充一個對象,在下行,它仍然是空的。 NSMutableArray不是nil,因爲這會引發異常。

有人猜測?

回答

10

它不會引發異常,如果它是nil。如果它通常對該消息作出響應,您仍然可以發送消息nil。在這種情況下,你只會得到0.我認爲你沒有分配數組。請確保你這樣做:

array = [[NSMutableArray alloc] init]; 

隨着調試提示,如果你不確定對象的狀態,並要確保對象確實存在,並且隨時可以使用,使用assert(appdelegate.objects);如果該數組爲零,您的代碼將停止在此行執行。如果它不停在這條線上,那麼你知道這個對象存在於內存中。

+0

確實是空的。使用了一個也沒有分配/初始化數組的示例,但這是一個工作示例。這怎麼可能工作? – TomWebDev

+0

@TomWebDev嗯它不可能工作。它必須被分配到某個地方,也許代碼很難被發現。你有鏈接到這個例子嗎? – Snowman

+0

可能陣列是用arrayWithCapacity創建的?因爲你不會發現數組的任何分配。 – NDY

0

你的NSMutableArray的確幾乎肯定是null。它不會引發異常,因爲發送任何消息,在ObjC nil是一個空操作,會表現爲你所看到的,爲零或nil返回值等

嘗試登錄該以及仔細檢查。

相關問題