2012-09-05 75 views
7

后,我想将一个对象添加到一个NSMutableArray:NSMutableArray里是空的ADDOBJECT

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,因为这会引发异常。

有人猜测?

回答

10

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

array = [[NSMutableArray alloc] init]; 

随着调试提示,如果你不确定对象的状态,并要确保对象确实存在,并且随时可以使用,使用assert(appdelegate.objects);如果该数组为零,您的代码将停止在此行执行。如果它不停在这条线上,那么你知道这个对象存在于内存中。

+0

确实是空的。使用了一个也没有分配/初始化数组的示例,但这是一个工作示例。这怎么可能工作? – TomWebDev

+0

@TomWebDev嗯它不可能工作。它必须被分配到某个地方,也许代码很难被发现。你有链接到这个例子吗? – Snowman

+0

可能阵列是用arrayWithCapacity创建的?因为你不会发现数组的任何分配。 – NDY

0

你的NSMutableArray的确几乎肯定是null。它不会引发异常,因为发送任何消息,在ObjC nil是一个空操作,会表现为你所看到的,为零或nil返回值等

尝试登录该以及仔细检查。

相关问题