8

我想将一个对象添加到 NSMutableArray 中:

NSLog(@"Object text: %@", object.text);
NSLog(@"Object: %@", object);
[appdelegate.objects addObject:object];
NSLog(@"Objects array size: %i", [appdelegate.objects count]);

这是输出:

Object text: This is the text
Object: <Object: 0x6e762c0>
Objects array size: 0

这怎么可能,我添加了一个对象,在下一行,它仍然是空的。NSMutableArrayis not ,因为那nil会引发异常。

有人猜吗?

4

2 回答 2

12

如果是,它不会引发异常nilnil如果对象通常响应该消息,您仍然可以向该对象发送消息。在这种情况下,您只会得到 0。我认为您没有分配数组。确保你这样做:

array = [[NSMutableArray alloc] init];

作为调试提示,如果您不确定对象的状态并想确保该对象确实存在并且可以使用,请使用assert(appdelegate.objects);如果数组为 nil,您的代码将在此行停止执行。如果它没有停在这一行,那么您就知道该对象存在于内存中。

于 2012-09-05T13:40:49.403 回答
0

您的 NSMutableArray 确实几乎可以肯定是空的。它不会引发异常,因为nil在 ObjC 中发送任何消息都是无操作的,并且会像您所看到的那样运行,返回值为 0 或nil等。

尝试记录它以仔细检查。

于 2012-09-05T13:40:25.873 回答