2010-08-19 118 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