数组排序错误未知原因

时间:2010-08-19 08:26:31

标签: cocoa arrays

你好我有这个数组比较两个数组,看看它是否包含一个对象,但是在用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");
}

第4个日志没有出现。 这是否意味着我的实现是错误的,如果它包含一个对象,或者它意味着没有这样的文件?

EDIT 这是我添加数组的地方

-(IBAction) addToFavorites {

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

为什么这不会显示为对象@"one"

1 个答案:

答案 0 :(得分:1)

第四个日志没有出现,因为数组不包含对象@"one" - NSLogif语句测试范围内。

如图所示,这是正确的 - 数组将为空,因此没有@"one"就不足为奇了。

据推测,真正的代码可以将内容放入数组中,但是因为我们无法看到它很难说出来。

编辑:虽然您在addToFavorites问题中添加的代码似乎很简单,但仍然不清楚它与原始代码的关系。从哪里打来的?什么是事件序列?

特别是一个问题是您似乎在两个位置分配新阵列。如果是这种情况,那么您没有看到@"one"出现的原因是您将其添加到一个数组中并在另一个数组中查找它。他们俩恰好被称为favoritesArray的事实是偶然的,只是混淆了水。

事实上,你很可能不应该在任何一个位置分配数组,而应该仅引用一个只在其他地方分配一次的数组(例如,在你的类的指定init方法中)然后在申请的整个生命周期内保留为ivar。