NSMutableArray在addObject后为空

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

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

有人猜测吗?

2个回答

11

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

array = [[NSMutableArray alloc] init];

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


确实是 null。使用了一个演示例子,它也没有分配/初始化数组,但那是一个可行的例子。那怎么可能有效呢? - TomWebDev
@TomWebDev 嗯,这不可能起作用。它必须已经被分配到某个地方了,也许代码只是很难找到。你有这个示例的链接吗? - Snowman
可能是使用了arrayWithCapacity创建了数组?因为你将找不到任何对数组的分配。 - NDY
@mohabitar 哦,你又是对的,但它被分配到另一个类中。我觉得这很奇怪,但也许这只是我的Java背景。 :) 谢谢你帮助我! 编辑:顺便说一下,这个教程链接是:http://buildmobile.com/parsing-xml-files-with-objective-c/#fbid=pOZvmtCbJRc - TomWebDev

0

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

尝试记录下来以进行双重检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接