-1

我有这个函数,其中函数的insertObject:AtIndex:0行为很奇怪。将所有对象插入到 NSMutableArray cardViewControllers 后,最终元素始终是nil。我在 init 方法的开头做了 alloc 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;
    }
4

2 回答 2

1

做什么[self removeAllCards]?我怀疑你打电话[cardViewControllers removeAllObjects]?你试过使用[cardViewControllers addObject:vc]吗?如果这可行并且顺序很重要,请使用 . 从后面穿过您的 for 循环i--

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

于 2013-03-13T14:04:18.100 回答
0

您不能将 nil 对象添加到数组中,这是运行时错误。所以保留计数一定很奇怪,这就是我目前所能想到的。NSArray 保留其中的对象,因此该对象在某处被释放了太多次。

这是一种可能吗?

于 2013-03-13T14:08:26.580 回答