-2

我在 .m 代码中有以下代码

@implementation MyGameController
{
    NSMutableArray* viewsarray;
}

我正在以这种方式初始化它

- (void)viewDidLoad
{
   viewsarray = [[NSMutableArray alloc] init];
   for (int i=0; i < TOTAL_ITEMS; i++)
   {
        ItemController* iv = [[ItemController alloc] initWithNibName:@"ItemPadXib" bundle:nil];

        [viewsarray addObject:iv];
    }
}

当我在这个函数的末尾检查时 - 数组是完整的并且包含我所有的项目。但是,后来它被释放(我认为)并且viewsarray被设置为nil。

我知道这一点,因为后来我尝试像这样访问它

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    ItemController* iv1 = [viewsarray objectAtIndex:index];
    ....
}

当我bp在这个函数中设置 a -viewsarraynil

我试图将其声明viewsarray为 aproperty但行为是相同的

一件重要的事情 - 在模拟器上它工作得很好。有什么不同吗 ?ARC 的行为是否不同?

4

1 回答 1

2

实例变量是强的viewsarray(默认情况下),因此不能自动释放。内存管理(通过 ARC)在模拟器和设备上是相同的。您的错误在其他地方。

于 2012-11-14T12:38:12.947 回答