2013-06-05 77 views
0

我已經隔離了setExcludedActivityTypes數組的內存泄漏。請參閱下面的代碼:UIActivityController中的內存泄漏

- (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數組聲明或暗示我仍然得到內存泄漏。如果我不包括任何排除項目的方式,我不會收到內存泄漏。所以我想我已經將它隔離到這個數組中。

有什麼我做錯了嗎?這可能是蘋果代碼中的錯誤嗎?

+0

'excludedActivityTypes' /'setExcludedActivityTypes'如何聲明和實現? – Kevin

+0

就像你在代碼中看到的一樣 - 沒有在NSArray * excludedItems之外的任何地方聲明... – RichNasser

+0

你在使用ARC嗎? – JonahGabriel

回答

1

幾乎可以肯定你的UIActivityViewController沒有獲得真實感,但它永遠有可能(儘管)不可能蘋果在這裏泄漏。

兩個想法:

1)你用它在文件中subclas UIActivityViewController,創建一個普通的子類,只需登錄一個常規的dealloc東西。確保事實上這是首先得到dealloc'd。 2)如果是這樣,在dealloc中將excludedItems屬性設置爲nil,並查看泄漏是否改變。

@interface MyUIActivityViewController : UIActivityViewController 
@end 

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

    //self.excludedActivityTypes = nil; 
} 
@end 
+0

大衛 - 謝謝你。你提供的解決方案確實如你所說的那樣工作。 – RichNasser

+0

@gatorNation但是,問題的對象得到釋放,或蘋果真的有一個錯誤? –

+0

當我用dealloc代碼實現了UIActivityViewController的子類,但沒有將excludedActivityTypes設置爲nil時,我確實在NSLog中獲得了dealloc消息,但我仍然有泄漏。所以我必須實現self.excludedActivityTypes = nil。你能否從我的觀察中推斷出,因爲我無法看到大圖仍:( – RichNasser