使用UIActivityViewController共享文件URL时存在内存泄漏

时间:2018-05-30 09:06:12

标签: ios objective-c xcode

我写了这样的代码,当我使用乐器时,我发现了内存泄漏。

            NSURL *filePath = [NSURL fileURLWithPath:path];
            UIActivityViewController *vc = [[UIActivityViewController alloc] initWithActivityItems:@[filePath] applicationActivities:nil];
            [self presentViewController:vc animated:YES completion:nil];

泄漏显示在仪器中

enter image description here

然后,我尝试共享NSString或NSURL(不是文件URL)。没有内存泄漏。 那么如何在没有内存泄漏的情况下共享文件URL呢?

            NSURL *path = [NSURL URLWithString:@"https://stackoverflow.com/"];
            UIActivityViewController *vc = [[UIActivityViewController alloc] initWithActivityItems:@[path] applicationActivities:nil];
            [self presentViewController:vc animated:YES completion:nil];

2 个答案:

答案 0 :(得分:0)

你能试试吗?

NSURL *filePath = [NSURL fileURLWithPath:path];
UIActivityViewController *vc = [[UIActivityViewController alloc] initWithActivityItems:@[filePath] applicationActivities:nil];
[self presentViewController:vc animated:YES completion:^
{ 
    vc=nil;
}];
[vc release];

答案 1 :(得分:0)

根据我在Xcode分配堆栈中的调查,每当我为文件url提供UIActivityViewController时,它会泄漏大约20-50个CFString个对象,其中包含文件的统一标识符。例如,当我传递一个mp3文件时,它包含"public.mp3"

我认为这些是为了检查哪些安装的应用程序可以打开文件而哪些不可以打开文件而创建的。

您应该提交错误报告以便让Apple修复它