2013-07-31 81 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