我试图让dealloc方法在存储于可变数组中的某些项目上运行,但似乎找不到让它发生的方式。
在一个较大的ARC项目中遇到了这个问题,并在此帖子中找到了答案:dealloc method is not invoked when set an object to nil。阅读了那篇答案后,我认为自己理解了ARC如何处理下面的代码,然而在一个非常简单的测试项目中运行后,我得到了相同的结果。
在主视图控制器中,我初始化了一个可变数组(一个强属性),并在其中添加了一些其他的视图控制器。然后我删除了所有对象:
在项目视图控制器中:
在一个较大的ARC项目中遇到了这个问题,并在此帖子中找到了答案:dealloc method is not invoked when set an object to nil。阅读了那篇答案后,我认为自己理解了ARC如何处理下面的代码,然而在一个非常简单的测试项目中运行后,我得到了相同的结果。
在主视图控制器中,我初始化了一个可变数组(一个强属性),并在其中添加了一些其他的视图控制器。然后我删除了所有对象:
- (void)viewDidLoad{
[super viewDidLoad];
containerArray = [[NSMutableArray alloc]init];
for(int i = 0; i < 10; i++){
//item +1 (item at +1)
Item *item = [[Item alloc]initWithNibName:nil bundle:nil];
//item +1 (item at +2)
[containerArray addObject:item];
//ARC should release item -1 (item at +1...I think)
}
//removeAllObjects should release each item -1 (item(s) at 0)
[containerArray removeAllObjects];
//dealloc should be called...
}
在项目视图控制器中:
-(void)dealloc{
NSLog(@"item dealloc");
}
非常感谢您的帮助。