Cocoa 数组排序错误未知原因

Cocoa 数组排序错误未知原因,cocoa,arrays,Cocoa,Arrays,您好,我有一个数组,它比较两个数组,看看它是否包含一个对象,但是在使用nslog测试它之后 NSLog (@"1"); favoritesArray = [[NSMutableArray alloc] init]; NSLog (@"2"); //Add items // favoritesArray = [[NSMutableArray alloc]init]; didContain = [[NSMutableArray alloc]init]; NSLog (@"3"); if ([fa

您好,我有一个数组,它比较两个数组,看看它是否包含一个对象,但是在使用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”

第四个日志不会出现,因为数组中不包含对象
@“one”
NSLog
在测试该情况的
if
语句中

对于如图所示的代码,这是正确的——数组将是空的,因此没有
@“one”
也就不足为奇了

据推测,真正的代码会在数组中放入内容,但由于我们看不到这一点,因此很难对其进行任何说明

EDIT:虽然您添加到问题中的
addToFavorites
代码看起来足够简单,但仍不清楚它与原始代码的关系。它是从哪里来的?事件的顺序是什么

一个特别的问题是,您似乎正在两个位置分配一个新数组。如果是这种情况,那么您没有看到出现
@“one”
的原因是您将它添加到一个数组中,并在另一个数组中查找它。他们两个碰巧都被称为favoritesArray,这是偶然的,只是把水弄脏了


事实上,极有可能您不应该在任何位置分配数组,而应该只引用在其他位置只分配一次的数组(例如,在类指定的
init
方法中)然后在应用程序的生命周期内作为ivar保存。

此代码中没有任何内容与文件有关。或者至少在类实例的生命周期内,并在实例被释放时释放(即,在类的
-(void)dealloc
方法中)。@Alx我想我不能在这里教你这一点。我建议您一步一步地阅读尽可能多的Objective-C和Cocoa教程。试着理解他们的意思,而不是拼凑零碎的代码。你能给我看一些这方面的教程吗?更具体的我想做什么?ThanksAlx:如果您不了解工作中的概念,获取特定应用程序或任务的教程和/或代码片段将不会对您有所帮助。阅读苹果的Objective-C编程语言和Cocoa基础指南文档,或者买本书。如果你选择后一种方式,我推荐斯科特·史蒂文森的《可可与目标C:启动并运行》。