我有这个函数,其中函数insertObject:AtIndex:0
表现得很奇怪。在将所有对象插入NSMutableArray cardViewControllers之后,最后一个元素始终是nil
。我在init方法的开头就为cardViewControllers分配了初始化。
- (void)reloadCardViews;
{
// Add the restaurants onto view
[self removeAllCards];
for (int i = 0; i < NO_OF_CARDS; i++) {
SHCCardVC *vc = [[SHCCardVC alloc] initWithAppearanceIndex:i];
vc.delegate = self;
[cardViewControllers insertObject:vc atIndex:0];//it's behaving weird here
[self addChildViewController:vc];
// set card position to center of the container
vc.view.center = CGPointMake(_cardContainer.frame.size.width / 2, _cardContainer.frame.size.height / 2);
[_cardContainer addSubview:vc.view];
}
_currentCardViewIndex = 0;
_currentCardIndex = 0;
}
答案 0 :(得分:1)
[self removeAllCards]
做什么?我怀疑你打电话给[cardViewControllers removeAllObjects]
?您是否尝试过使用[cardViewControllers addObject:vc]
?如果此方法有效并且订单很重要,请使用i--
从后面继续进行for循环。
还要确保您的对象不是nil,并且您的数组是可变的并且也已初始化。我对未初始化的可变数组有类似的问题。
答案 1 :(得分:0)
您无法将nil对象添加到数组中,这是一个运行时错误。因此,保留计数必须有些奇怪,这就是我现在所能想到的。 NSArray保留其中的对象,因此该对象在某处被释放太多次了。
这可能吗?