首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIActivityController中的内存泄漏

UIActivityController中的内存泄漏
EN

Stack Overflow用户
提问于 2013-06-06 01:45:33
回答 1查看 432关注 0票数 0

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

代码语言:javascript
复制
- (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];

}

如果我使用声明的或隐含的excludedItems数组运行代码,我仍然会得到内存泄漏。如果不包括排除项的任何一种方法,就不会发生内存泄漏。所以我想我已经把它隔离到这个数组中了。

我是不是做错了什么?这会不会是苹果代码中的一个bug?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 01:58:14

几乎可以肯定的是,你的UIActivityViewController不会被重新分配,但它总是有可能(尽管)苹果在这里有一个漏洞。

有两个想法:

1)子类UIActivityViewController在您使用文件中,创建一个简单的子类,它只是在dealloc例程中记录一些内容。确保这实际上是首先取消分配的。

2)如果是,则在dealloc中将excludedItems属性设置为nil,并查看泄漏是否发生更改。

代码语言:javascript
复制
@interface MyUIActivityViewController : UIActivityViewController
@end

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

    //self.excludedActivityTypes = nil;
}
@end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16946517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档