2012-06-02 48 views
0

所以我有以下代碼:不能添加對象的NSMutableArray

NSMutableArray *array 
array=[[NSMutableArray alloc] init]; 
[array addObject: object1]; 
[array addObject: object2]; 
NSLog(@"%@",array); 

當我用我的iPod連接到我的Mac應用程序,寫的NSLog只是空,我不明白object1對象2 。我究竟做錯了什麼?

PS:數組是.H @property (nonatomic, retain) NSMutableArray *array;

+0

你可以發佈兩個對象的'NSLog'嗎? – Alladinian

+0

你是否在.m文件中使用@synthesize數組? – Stefan

+0

此外,如果你已經有這個作爲一個屬性,做'NSMutableArray *數組'(其中btw你錯過了一個分號)有什麼意義? – Alladinian

回答

1

屬性它應該是:

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

已編輯的問題 – adr

0

[[NSMutableArray array] init]應該是[[NSMutableArray alloc] init]。這將工作,但它不是一個適當的方式來初始化對象。你沒有發佈你的array是什麼,我想你宣佈它是錯的。它應該是一個指向NSMutableArray對象的指針。這裏是一個工作代碼:

NSMutableArray *array=[[NSMutableArray alloc] init]; 
[array addObject: @"a"]; 
[array addObject: @"b"]; 
NSLog(@"%@",array); 
+1

他可能已將其列爲成員。 – Luke

+0

編輯的問題,我喜歡你的代碼 – adr

+0

@adr如果你有一個綜合的屬性,你不需要一個局部變量。 – Adam

0

你根本沒有初始化你的數組,所以它不返回任何東西。

array=[[NSMutableArray alloc] init]; 
[array addObject: object1]; 
[array addObject: object2]; 
NSLog(@" Array is:%@",array); 

記住事後釋放它(除非您使用ARC)

0

你可以嘗試在同一行這樣做。

NSMutableArray *array = [[NSMutableArray alloc] arrayWithObjects:@"a", @"b", nil]; 
NSLog(@"%@",array); 
+0

'arrayWithObjects'是一個類方法 – Alladinian

+0

@Alladinian的權利,他應該使用'initWithObjects:'來代替。 – Adam

+1

@Adam Or'[NSMutableArray arrayWithObjects:@「a」,@「b」,nil]' – Alladinian

0

您將數組聲明爲屬性。其對應的iVar被初始化爲零。 所以在你的init方法,你必須初始化:

假設添加的東西

[self.array addObject: object]; 

另外請注意,當你使用

@synthesize array; 

在你的init方法

if (self) { 
//other init stuff 
array = [[NSMutableArray array] retain]; 
} 

然後他反對你放在那裏必須正確初始化,而不是零。 所以嘗試登錄這也

NSLog("the object %@ was put in array. Array contains: %@",object, self.array); 

而且在dealloc中,釋放你的陣!