2010-08-19 117 views
0

你好我有這個陣列是比較兩個陣列,看它是否與的NSLog數組排序錯誤原因不明

NSLog (@"1"); 
favoritesArray = [[NSMutableArray alloc] init]; 
NSLog (@"2"); 
//Add items 
// favoritesArray = [[NSMutableArray alloc]init]; 

didContain = [[NSMutableArray alloc]init]; 
NSLog (@"3"); 

if ([favoritesArray containsObject:@"one"]) 
{ 
    [didContain addObject:@"one"]; 
    NSLog (@"4"); 
} 

的第四日誌沒有按出現測試之後包含一個對象然而。 這是否意味着我的實現是錯誤的,如果它包含一個對象或者它意味着沒有像這樣的文件?

編輯 這裏是我添加一個數組

-(IBAction) addToFavorites { 

favoritesArray = [[NSMutableArray alloc] init]; 
[favoritesArray addObject:@"one"]; 
NSLog (@"hello"); 

怎麼來的,這並不顯示爲對象@"one"

+0

沒有什麼在這段代碼有什麼關係的文件。 – 2010-08-19 09:09:05

+0

我編輯的問題 – 2010-08-19 09:18:29

回答

1

第四日誌不會出現,因爲數組不包含對象@"one" - 該NSLog是這種情況下,if聲明內測試。

隨着如圖所示的代碼,這是正確的 - 數組將是空的,所以這並不奇怪,有沒有@"one"

想必真正的代碼做一些事情把東西陣中,但由於我們無法看到它很難說什麼。

編輯:儘管您添加到addToFavorites問題的代碼看起來很直觀,但它與原始代碼的關係仍不清楚。它從哪裏來的?什麼是事件的順序?特別

一個問題是,你似乎被分配在兩個位置的新數組。如果是這種情況,那麼看不到@"one"的原因是您將它添加到一個數組中,並在另一個數組中查找它。事實上,他們都被稱爲favoritesArray是偶然的,只是泥水。實際上,你不應該在任何位置分配數組,而應該引用只在其他地方分配一次的數組(例如,在你的類中指定的init方法),然後在您申請的整個一生中保持爲ivar。

+0

我編輯我的問題 – 2010-08-19 09:17:45

+0

@Alx見上更新的答案。 – walkytalky 2010-08-19 10:21:56

+0

或者至少在類的實例的生命週期中,並且當實例被解除分配時(即,在類的「 - (void)dealloc」方法中)釋放。 – 2010-08-19 10:27:02