Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIImagePickerController不会释放它所占用的内存_Iphone_Ios_Uipickerviewcontroller - Fatal编程技术网

Iphone UIImagePickerController不会释放它所占用的内存

Iphone UIImagePickerController不会释放它所占用的内存,iphone,ios,uipickerviewcontroller,Iphone,Ios,Uipickerviewcontroller,我在我的应用程序中使用仪器时看到了这件事。当我评测我的应用程序时,占用的初始内存是563KB,在弹出UIImagePickerController之前。第一个viewController上有一个按钮,用于显示UIImagePickerController。 只要出现UIImagePickerController,占用的内存就会上升到1.6-1.7 MB。如果我选择任何图像或取消UIImagePickerController,则占用的内存仍然是1.6-1.7 MB,我认为应该是563 KB(或者可

我在我的应用程序中使用仪器时看到了这件事。当我评测我的应用程序时,占用的初始内存是563KB,在弹出
UIImagePickerController
之前。第一个viewController上有一个按钮,用于显示
UIImagePickerController

只要出现
UIImagePickerController
,占用的内存就会上升到1.6-1.7 MB。如果我选择任何图像或取消
UIImagePickerController
,则占用的内存仍然是1.6-1.7 MB,我认为应该是563 KB(或者可能多几个KB)。
请参阅我使用的以下代码:

- (IBAction)chooseButtonPressed:(id)sender
{
    UIImagePickerController *pickerController = [[UIImagePickerController new]autorelease];
    [pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [pickerController setDelegate:self];
}  
为什么内存没有被释放

试试这个

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
[picker release];

因为您已经给了它自动释放选项,它将被添加到自动释放池中。。。查看文档中的内容

应用程序工具包在主线程上创建一个自动释放池 事件循环的每个循环的开始,并在 结束,从而释放在 处理事件

您总是可以像这样在委托调用中释放选择器

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
...
...
[picker release];

}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
....
....
[picker release];

}

您是否将委托设置为
nil

有关更多信息,请参阅


希望这对您有所帮助。

我们无法在评论中添加图像,因此我将此作为答案。除非第一次释放内存,否则
活动字节数
始终小于
总字节数
。从下图可以看出这一点

我不认为你的交易有什么问题。我想你只是看错了值

编辑-我认为问题可能出在其他地方。要查看我看到的值,您需要做一些更改。如下图所示,您需要取消选中选项
仅跟踪活动分配
,以查看您要查找的值。如果在
活动分配中仍看到7.41 MB,则问题在于其他方面


否您当时尝试自动释放而不是自动释放释放内存。并且在
-(void)imagePickerController:(UIImagePickerController*)中,picker没有用信息完成PickingMediaWithInfo:(NSDictionary*)信息
方法写入
[picker dismissModalViewControllerAnimated:YES]你说得很对。你的建议是我最近尝试的。请看我编辑的问题。我添加了一个屏幕截图。活动字节与总字节相同Bytes@Nitish请尝试一下我在编辑中提到的小改动。但是如何取消选中。编辑选项在此不可用。我遇到问题。我是在检查泄漏,而不是仪器的配置。因此,活动字节和总字节的值是相同的。但这有意义吗?只有在分析停止时才能取消选中。你总是可以重新开始。我不知道为什么在检查泄漏时,活动字节和总字节的结果是相同的。可能是因为
仅跟踪活动分配
选项也被选中。请检查此项。您是在查看占用的
总字节数
还是活动字节数
?由于显而易见的原因,
总字节数
将永远不会减少……是的,我正在查看总字节数。但是为什么它不会减少呢?它是所有添加到内存中的字节的盲和。释放内存时,总和不会减少。在
总字节
的右侧左侧,必须有一列
活动字节
。观察此列中的值,您的问题将得到回答!活动字节和总字节都是相同的。@Maulik:我编辑了答案,并为UIImagePickerController添加了类参考,因为答案出现在
低质量Post
@ParthBhatt:谢谢。。。你在哪里找到低质量的帖子???我不知道;D@Maulik它位于
查看
部分。我在查看那些低质量的帖子,发现了你的帖子,因此对其进行了编辑。@ParthBhatt:再次感谢……下次我会处理好的……:D@Maulik字体我没有改变你的答案,因为我不能完全改变海报的答案。因为这会给他带来不利影响,有时会给他的声誉带来好处。:)
[picker release];
picker.delegate = nil ;