2013-07-31 80 views
0

我刚刚在我的应用程序中发现了内存泄漏,但我不确定如何去修复它。它涉及一个活动视图,该视图用于共享从RSS源中查看的当前文章的URL。我不确定泄漏的原因。任何想法或建议? iPhone Leak iPad Leak活动视图的iOS内存泄漏

所讨论的方法的iPhone版本是:

- (void) showMenu 
{ 
    NSURL *urlToShare = hackyURL; 
    NSArray *activityItems = @[urlToShare]; 
    TUSafariActivity *activity = [[TUSafariActivity alloc] init]; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll]; 

    [self presentViewController:activityVC animated:TRUE completion:nil]; 
} 

编辑:

__block UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll]; 

    [self presentViewController:activityVC animated:YES completion:^{activityVC.excludedActivityTypes = nil; activityVC = nil;}]; 

:我通过改变上面的代码此固定在iPhone泄漏除了使用弹出窗口显示活动视图之外,iPad版本基本相同。

- (void)showMenu 
{  
    NSURL *urlToShare = hackyURL; 
    NSArray *activityItems = @[urlToShare]; 
    TUSafariActivity *activity = [[TUSafariActivity alloc] init]; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll]; 

    if ([popover isPopoverVisible]) 
    { 
     [popover dismissPopoverAnimated:YES]; 
     popover = nil; 
    } 
    else 
    { 
     self.popover = [[UIPopoverController alloc]initWithContentViewController:activityVC]; 
     [self.popover presentPopoverFromBarButtonItem:systemAction permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    } 

} 
+0

您使用ARC吗? – Alexander

+0

是的,我正在使用ARC。 – raginggoat

+1

如果您发现自己的问题的答案,请在下面添加解决方案作为正确的答案并接受它。 – sergio

回答

0

我已经改变了上面的代码,以这个固定的iPhone泄露:

__block UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll]; 

    [self presentViewController:activityVC animated:YES completion:^{activityVC.excludedActivityTypes = nil; activityVC = nil;}]; 

,但我无法弄清楚如何修复泄漏了iPad上的酥料饼。

0
if ([self.popover isPopoverVisible]) 
    { 
     [self.popover dismissPopoverAnimated:YES]; 
     self.popover = nil; 
    } 
    else 
    { 
     self.popover = [[UIPopoverController alloc]initWithContentViewController:activityVC]; 
     [self.popover presentPopoverFromBarButtonItem:systemAction permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    } 

希望它能解决您的问题。

+0

这并没有解决泄漏问题。 – raginggoat