0

使用 ARC。我有一个简单的两个视图控制器,一个是启动视图控制器,第二个是自定义 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

编辑:我只是用两个控制器创建空白项目,用仪器(分配)运行它,在应用程序完全加载后我有 568Kb,然后我点击显示模态控制器并关闭它,我得到 642Kb(在第二个视图控制器中我放了 10来自 IB 的对象)问题是为什么?为什么这些数据没有完全销毁,可能是缓存或一些?

4

1 回答 1

5

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

于 2012-07-13T10:57:50.673 回答