为什么我的ViewController仅在第二次调用后发布,iOS ARC?

时间:2012-07-13 10:49:21

标签: iphone ios uiviewcontroller automatic-ref-counting release

使用ARC。 我有一个简单的两个viewcontroollers,一个是启动viewcontroller,第二个是自定义UIImagepickerViewController(一对自定义视图)

@interface ViewController : UIViewController { 
}
@property (nonatomic, strong) CameraController *cameraController;




@implementation ViewController
@synthesize cameraController;
-(void) showCame {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{   
    self.cameraController = [[CameraController alloc] init];
    self.cameraController.delegate = self;
    [self presentModalViewController:self.cameraController animated:YES];
}   
}

但是当我做[self dismissModalViewControllerAnimated:YES];在相机控制器中,它不会释放内存,只有当我第二次调用它时,它会调用第一个实例的dealloc并创建第二个实例。

不要忘记我使用ARC

编辑: 我只是用两个控制器创建空白项目,用仪器运行它(Allocations),在app完全加载后我有568Kb然后我点击显示模态控制器并解雇它,我得到642Kb(在第二个视图控制器中我放了10个物体来自IB) 问题是为什么?为什么这些数据没有完全被破坏,可能是缓存还是一些?

1 个答案:

答案 0 :(得分:5)

即使您正在呼叫dismissModalViewControllerAnimated:,您仍然会保留一个强大的指针。您必须设置指针self.cameraController = nil;以告诉ARC您不再需要指向它的指针。