iphone - 为什么我的 ViewController 仅在第二次调用后释放,iOS ARC?

标签 iphone ios uiviewcontroller automatic-ref-counting release

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

@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];在相机 Controller 中,它不会释放内存,只有当我第二次调用它时,它才会调用第一个实例的 dealloc 并创建第二个实例。

别忘了我用的是ARC

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

最佳答案

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

关于iphone - 为什么我的 ViewController 仅在第二次调用后释放,iOS ARC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469000/

相关文章:

ios - 如何在 iOS Swift 中使用 Alamofire 将 iPhone 视频上传到服务器?

iphone - id<诉讼> 是什么意思?

ios - 如何在 UITableVIewCell 中进行 API 调用

ios - 获取 iPhone 旋转和方向以实时旋转 3D 对象

objective-c - 关于 objective-C 和 cocoa/cocoa-touch 的实现的良好知识/信息来源是什么?

ios - 导入外部库后,具有 UINavigationControllerDelegate 的 ViewController 中出现冗余一致性错误

ios - 在另一个 UIViewController 中显示缩放的 UIViewController

iphone - 当 UIWebView 中的文本字段处于事件状态时禁用缩放

iphone - 如何在 objective-c 中设置 NSNumber 变量的值(不创建新对象)

ios - 将内容动态添加到 View Controller 的代码有什么好的做法?