insertObject:AtIndex:0无法正常工作

时间:2013-03-13 13:40:37

标签: ios objective-c nsmutablearray nsarray

我有这个函数,其中函数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;
    }

2 个答案:

答案 0 :(得分:1)

[self removeAllCards]做什么?我怀疑你打电话给[cardViewControllers removeAllObjects]?您是否尝试过使用[cardViewControllers addObject:vc]?如果此方法有效并且订单很重要,请使用i--从后面继续进行for循环。

还要确保您的对象不是nil,并且您的数组是可变的并且也已初始化。我对未初始化的可变数组有类似的问题。

答案 1 :(得分:0)

您无法将nil对象添加到数组中,这是一个运行时错误。因此,保留计数必须有些奇怪,这就是我现在所能想到的。 NSArray保留其中的对象,因此该对象在某处被释放太多次了。

这可能吗?