【发布时间】:2012-11-02 21:23:22
【问题描述】:
我在 .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 的行为是否不同?
【问题讨论】:
-
尝试从 NSMutableArray 派生你自己的类,看看何时在这个派生类中调用 dealloc。
-
感谢易软。马上试试
-
很难从
NSMutableArray派生出来(NSArray是一个类簇)。设置关联对象并观察其销毁可能更容易。
标签: ios ipad ios-simulator automatic-ref-counting