ios - UIActivityController 中的内存泄漏

标签 ios uiactivityviewcontroller

我已经隔离了 setExcludedActivityTypes 数组的内存泄漏。见下面的代码:

- (void)postToFacebook:(UITapGestureRecognizer *)sender
{
    NSString *postText = socialString;
    UIImage *imageToPost = [self captureTheScreenImage];
    NSArray *postItems = @[postText, imageToPost];

    UIActivityViewController *activityPostVC = [[UIActivityViewController alloc]initWithActivityItems:postItems applicationActivities:nil];


    //NSArray *excludedItems = @[UIActivityTypePostToWeibo,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll, UIActivityTypeMail, UIActivityTypeMessage];

    //[activityPostVC setExcludedActivityTypes:excludedItems];

    [activityPostVC setExcludedActivityTypes:@[UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll, UIActivityTypeMail, UIActivityTypeMessage]];

    [self presentViewController:activityPostVC animated:YES completion:nil];

}

如果我使用声明或暗示的 exceptedItems 数组运行代码,我仍然会遇到内存泄漏。如果我不包括任何一种排除项目的方式,我就不会出现内存泄漏。所以我想我已经将它隔离到这个数组中。

我是不是做错了什么?这可能是 Apple 代码中的错误吗?

最佳答案

几乎可以肯定,您的 UIActivityViewController 不会被重新分配,但 Apple 始终有可能(尽管)在这里发生泄漏。

两个想法:

1) 在您使用的文件中使用 UIActivityViewController 子类,创建一个简单的子类,仅在 dealloc 例程中记录一些内容。确保实际上这是首先被释放的。

2) 如果是这样,则在 dealloc 中将 exceptedItems 属性设置为 nil,并查看泄漏是否发生变化。

@interface MyUIActivityViewController : UIActivityViewController
@end

@implementation MyUIActivityViewController
- (void)dealloc
{
    NSLog(@"@ MyUIActivityViewController dealloc");

    //self.excludedActivityTypes = nil;
}
@end

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

相关文章:

ios - 如何让 firemonkey 在 iOS 上显示本地通知?

ios - 具有备用文件名的 UIActivityViewController?

objective-c - 更改模态 UIActivityViewController 的外观

ios - UIActivityViewController 的短信窗口变得部分透明

ios - 如何获取 collectionviewcell 的选定 indexpath.row 的数量作为 slideshare

ios - 复选框在 Swift 中选中的 Action ?

javascript - 如何在 iOS 上注册 <input type=date> 的值更改事件

iphone - 调用委托(delegate)的委托(delegate)

swift - 点击按钮(位于 UICollectionViewController 中)时如何激活共享扩展(UIActivityViewController)?

ios - UIActivityViewController 显示空白选项且无法交互