我对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
吗?
为什么不将它们放在单独的行中并找出来?