UIImagePickerController保存未记录的内存

时间:2013-02-01 05:08:46

标签: ios objective-c cocoa-touch uikit

我允许用户从他/她的图书馆中挑选视频。当照片库打开时,如果我要查看设置 - > General-> Usage,似乎大约1.5Mb被添加到文档和数据中。一旦用户选择了视频并将其压缩,就会向文档和数据添加总共约4.5Mb的视频。我的问题是这个数据/内存似乎永远不会释放。在完成任何类型的保存之前,这都是添加的。所以文件和数据使用量不断上升,我不知道为什么。我很确定一切都在发布。

- (void)viewDidAppear:(BOOL)animated
 {
//[super viewDidAppear:animated];
      if (IsFirstCall) {

          UIImagePickerController *uploadPick = [[[UIImagePickerController alloc] init] autorelease] ;
          uploadPick.delegate = self;
          uploadPick.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
          uploadPick.mediaTypes = [[[NSArray alloc] initWithObjects:(NSString *) kUTTypeMovie, nil] autorelease];   

         [self presentViewController:uploadPick animated:YES completion:nil];
         //[uploadPick release];
    }
}

非常感谢任何帮助。我不认为它可以在实际手机上使用文件管理器仪器,它似乎只适用于模拟器。我花了很多时间试图弄清楚为什么会这样。

1 个答案:

答案 0 :(得分:1)

这里发生的事情的可能性实际上是临时文件被保存。你提到压缩视频似乎会引发空间的增加。

有两种方法可以通过两种方法中的一种来确认。通过重新启动您正在测试的设备。当需要额外空间或系统关闭时,系统将清除临时项目。

另一种方法(可能更具信息性)是通过Xcode组织者调查应用程序。您可以通过在设备上选择应用程序并浏览应用程序目录结构来完成此操作。每个应用程序都有3个目录,/ Documents,/ Library和/ tmp。

对于密集型操作,可能需要使用大量内存,某些库会将已完成的数据保存到磁盘中,以释放内存。一旦操作完成,它将传回一个数据块,该数据块引用临时文件中的数据,或者将完成的数据加载回内存。这个过程对用户和开发人员来说是完全透明的,并且充分利用了大量的闪存,而不是完全依赖相对有限的RAM。

如果它不是临时文件,而是位于应用程序(甚至库)的Documents文件夹中的某些内容,将它下载到您的计算机并尝试调查其内容可能很有用,它可能会给你一些关于发生了什么的线索。

希望这有帮助

为清晰起见编辑了一点