Ios UIActivityController中存在内存泄漏

Ios UIActivityController中存在内存泄漏,ios,uiactivityviewcontroller,Ios,Uiactivityviewcontroller,我已隔离到setExcludedActivityTypes数组的内存泄漏。见下面的代码: - (void)postToFacebook:(UITapGestureRecognizer *)sender { NSString *postText = socialString; UIImage *imageToPost = [self captureTheScreenImage]; NSArray *postItems = @[postText, imageToPost];

我已隔离到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];

}
如果我使用声明或暗示的excludedItems数组运行代码,仍然会出现内存泄漏。如果我不包括排除项的任何一种方式,我就不会出现内存泄漏。我想我已经把它和这个阵列隔离了


我做错什么了吗?这可能是苹果代码中的一个bug吗?

几乎可以肯定的是,您的UIActivityViewController没有被重新配置,但苹果始终有可能(尽管)出现漏洞

两个想法:

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

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

@interface MyUIActivityViewController : UIActivityViewController
@end

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

    //self.excludedActivityTypes = nil;
}
@end

excludedActivityTypes
/
setExcludedActivityTypes
是如何声明和实现的?正如您在代码中看到的一样-除了NSArray*excludedItems之外,没有在任何地方声明…David-感谢您的帮助。您提供的解决方案确实如您所述工作正常。@但是问题是对象被解除分配,还是Apple确实存在错误?当我使用解除分配代码实现UIActivityViewController的子类,但没有将excludedActivityTypes设置为nil时,我在NSLog中收到了解除分配消息,但我还是有漏洞。所以我必须实现self.excludedActivityTypes=nil。你能从我的观察中推断出来吗,因为我仍然看不清全局:(