addObject后NSMutableArray为空

时间:2012-09-05 13:39:12

标签: objective-c ios nsmutablearray

我想将一个对象添加到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

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

有人在猜吗?

2 个答案:

答案 0 :(得分:10)

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

array = [[NSMutableArray alloc] init];

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

答案 1 :(得分:0)

你的NSMutableArray确实几乎肯定是null。它不会引发异常,因为在ObjC中向nil发送任何消息都是无操作,并且会像您看到的那样,返回值为零或nil等。< / p>

尝试记录,以便仔细检查。