我在.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
时,viewsarray
为nil
我尝试将viewsarray
声明为property
,但行为相同
一个重要的事情 - 在模拟器上它工作得很好。有什么不同吗 ? ARC表现不同吗?
答案 0 :(得分:2)
viewsarray
实例变量很强(默认情况下),因此无法自动释放。内存管理(通过ARC)在模拟器和设备上是相同的。你的错误在其他地方。