gpt4 book ai didi

ios - 如何修复 UIPopoverController 中呈现的 UIActivityViewController 的内存泄漏

转载 作者:行者123 更新时间:2023-11-29 03:55:27 25 4
gpt4 key购买 nike

类似于this postthis one我正在为我的应用程序中的共享选项创建一个 UIActivityViewController (ARC 激活)。它是一个通用应用程序,因此我将在 iPhone/iPod 上以模态方式展示 UIActivityViewController,在 iPad 上将其置于弹出窗口内。在分析我的应用程序时,Instruments 检测到用于创建 UIActivityViewController 的函数内 NSArray 的内存泄漏:

MyActivityItemProvider *activityItemProvider = [[MyActivityItemProvider alloc] init];//custom activity item provider
NSArray *items= [NSArray arrayWithObjects:activityItemProvider, nil];
UIActivityViewController *activity = [[UIActivityViewController alloc]
initWithActivityItems:items
applicationActivities:nil];

[activity setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeAssignToContact,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo, UIActivityTypeMessage,nil]];

使用上面提到的帖子中的答案(__block 和完成来销毁被排除的事件项目的数组),我设法修复了 iPhone 的泄漏,因为函数presentViewController确实提供了一个完成处理程序。

如何将 UIActivityController 及其排除事件类型设置为 nil,以便在弹出窗口中呈现它? 我发现 UIActivityViewController 提供了completionHandler 属性,但我无法理解如何使用它而不创建循环...

提前致谢!

最佳答案

根据您的要求尝试此代码

__block UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
activityController.excludedActivityTypes = [NSArray arrayWithObjects:@"a",@"b", nil];
[self presentViewController:activityController animated:YES completion:^{ activityController.excludedActivityTypes=nil; activityController=nil;}];

关于ios - 如何修复 UIPopoverController 中呈现的 UIActivityViewController 的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com