ios - iPhone 中 UIimagePickercontroller 的内存问题

标签 ios memory-leaks

要知道手动解决内存泄漏,它并不像 ARC 如何在 iOS 中处理释放不需要的对象那么容易,感谢 Apple 引入 ARC,它使工作变得容易。
但是我是一个坚持手动解决内存泄漏的人,因为我正在处理不使用 ARC 的相当旧的代码。好的,让我解释一下这个问题。我的应用程序包含在应用程序中捕获图片的代码。这是做这项工作的一小段代码。

- (void) takePhoto
{
    ipc = [[UIImagePickerController alloc] init];
    NSLog(@"retain count of IPC is %d", [ipc retainCount]);
    ipc.delegate = self;
    NSLog(@"retain count of IPC is %d", [ipc retainCount]);

    if(ipc) {   
        ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
        NSLog(@"retain count of IPC is takephoto %d", [ipc retainCount]); 
        [self presentModalViewController:ipc animated:YES];
        NSLog(@"retain count of IPC is %d", [ipc retainCount]);
    } else {
        VSCore *vsCore = [[VSCore alloc]init];
        [vsCore MessageBox:@"Device does not support taking photos"withTitle:kInfoEN];
        [vsCore release]; // written on april 14th 2013
    }
}

我正在尝试追踪 ipc 对象的保留计数,所以我将 NSlog 放在某些地方。一旦我设置了委托(delegate),(ipc.delegate = self); UIImagePickercontroller 的代表将被调用,其中之一是
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ }

在这里处理图像后,我正在打印 ipc 的保留计数,结果为 5,imagepickerdelegate 正在内部增加 ipc 的保留计数,但我只创建了一次 ipc 对象。根据此链接http://www.markj.net/iphone-memory-management-tutorial-video/ .释放的数量应该等于保留计数。如果我不止一次调用释放,我将收到发送到已释放实例的消息。但保留 IPC 的数量仍然是 5。任何人都可以帮我解决这个问题。谢谢,

我在另一个类中发布 Ipc,我已将 ipc 声明为单吨类中的属性,我正在像这样发布 ipc...
[[[VVideoDevice getInstance] ipc ] release];

ipc 是 vvideodevice 类中的一个属性。

最佳答案

保留计数是无用的。不要调用它。

那个关于内存管理的视频是一个可怕的教程,如果它告诉你一个对象的绝对保留计数是有意义的。

您应该平衡您的保留与发布电话;将每个保留视为计数的 +1,并通过释放来平衡它。

使用弧。使用分配工具监控内存使用情况。最后,使用静态分析器来帮助确保您的代码是正确的。

http://www.whentouseretaincount.com了解更多信息。

关于ios - iPhone 中 UIimagePickercontroller 的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459182/

相关文章:

memory-leaks - ImageView显示来自url内容的图像占用更多内存,并且应用崩溃

C 在结构中释放多维数组似乎不正确

javascript - Ajax 内存泄漏

ios - “scrollViewDidScroll”无法连续捕获移动

ios - 杀死应用程序后后台提取不起作用

ios - 当应用程序处于前台时,UILocalNotification 在通知中心显示警报

iOS 8 添加联系人到地址簿

python - 调试 Python C 扩展模块中的引用计数内存泄漏

ruby-on-rails - ActionMailer 中的内存泄漏

ios - 当 block 从 swift 转移到 Objective-C 时出现内存问题