【问题标题】:array sorting error unknown cause数组排序错误未知原因
【发布时间】:2010-08-19 08:26:30
【问题描述】:

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

【问题讨论】:

  • 这段代码中没有任何与文件有关的内容。

标签: cocoa arrays


【解决方案1】:

第四个日志没有出现,因为数组不包含对象 @"one" -- NSLogif 语句中测试这种情况。

使用显示的代码,这是正确的 - 数组将为空,因此没有 @"one" 也就不足为奇了。

大概是真正的代码做了一些事情来把东西放入数组中,但是因为我们看不到它很难说什么。

编辑:尽管您为addToFavorites 添加到问题中的代码看起来很简单,但仍不清楚它与原始代码的关系。它是从哪里调用的?事件的顺序是什么?

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

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

【讨论】:

  • 或者至少在类实例的生命周期内,并在实例被释放时释放(即在类的- (void) dealloc 方法中)。
  • @Alx 我想我不能在这里教你。我建议您逐步阅读尽可能多的 Objective-C 和 Cocoa 教程find online。尝试理解他们的目的,而不是仅仅拼凑一些代码。
  • 你能给我看一些这方面的教程吗?更具体的我想做什么?谢谢
  • Alx:只要您不了解工作中的概念,获取特定应用程序或任务的教程和/或代码 sn-ps 对您没有帮助。阅读 Apple 的 Objective-C 编程语言和 Cocoa 基础指南文档,或购买一本书。如果你走后者路线,我推荐 Scott Stevenson 的“Cocoa 和 Objective-C:Up and Running”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
相关资源
最近更新 更多