我对ObjC及其可变数组很陌生。这真让我抓狂 ;-)

我执行以下操作:

mColumns = [NSMutableArray array];
for( int i=0; i<5; i++ ) [mColumns addObject:[[MyColumn alloc] init]];


在该代码之后,我的数组“ mColumns”包含5个元素。但是它们每个都是NULL指针! (或者至少那是调试器告诉我的)。
我已经检查了代码

[[MyColumn alloc] init]


给我一些有效的对象,所以我不知道为什么我的数组被0x0s填充。
你能给我一个提示吗?

最佳答案

如果您希望它保持不变,请保留您的mutableArray。在当前事件循环的结尾,它将自动释放,就像在autoreleasePool中一样。

那时所有赌注都没有了。您的mColumns变量仅指向垃圾内存,也许是另一个对象,也许是一半对象,甚至您仍然可以获得正确的计数甚至包含的对象,但是在某些时候您的应用程序将崩溃。

很快,如果[[mColumns objectAtIndex:x] addObject:g];导致您的应用崩溃,是[mColumns objectAtIndex:x]导致崩溃还是addObject:g吗?

为什么不将它们放在单独的行中并找出来?

10-08 11:02