2013-06-05 1 views
0

setExcludedActivityTypes 배열에 메모리 누수가 발생했습니다. 나도 선언 아니면 여전히 메모리 누수를 얻을 암시 excludedItems 배열과 코드를 실행하면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]; 

} 

: 아래 코드를 참조하십시오. 항목을 제외하는 방법을 포함하지 않으면 메모리 누수가 발생하지 않습니다. 그래서 나는이 배열로 그것을 분리했다고 생각합니다.

내가 잘못하고있는 것이 있습니까? 이 코드는 Apple 코드에서 버그가 될 수 있습니까?

+0

어떻게'excludedActivityTypes'는'선언 및 구현 setExcludedActivityTypes' /입니까? – Kevin

+0

코드에서 보는 것처럼 - NSArray * excludedItems ... 이외의 다른 곳에서는 선언되지 않았습니다. – RichNasser

+0

ARC를 사용하고 있습니까? – JonahGabriel

답변

1

거의 확실하게 UIActivityViewController가 재 할당되지는 않지만 항상 애플이 여기에 누출 가능성은 없습니다.

두 아이디어 :

1) 당신이 그것을 사용하는 파일에 UIActivityViewController을 subclas는 단순히 할당 해제 루틴에 뭔가를 기록 사소한 서브 클래스를 만들 수 있습니다. 사실 이것이 dealloc'd를 먼저 얻는 지 확인하십시오.

2) 그렇다면 dealloc에서 excludedItems 속성을 nil로 설정하고 누수가 변경되는지 확인합니다.

@interface MyUIActivityViewController : UIActivityViewController 
@end 

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

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

David - 감사합니다. 언급 한대로 제공 한 솔루션이 작동했습니다. – RichNasser

+0

@gatorNation 그러나 객체가 할당 해제되는 문제, 또는 Apple이 실제로 버그가 있다는 문제가 있었습니까? –

+0

dealloc 코드로 UIActivityViewController의 서브 클래스를 구현했지만 excludedActivityTypes를 nil로 설정하지 않고 NSLog에서 dealloc 메시지를 받았지만 여전히 누수가있었습니다. 그래서 self.excludedActivityTypes = nil을 구현해야했습니다. 내 관찰에서 추론 할 수 있습니까? 여전히 큰 그림을 보는 데 문제가 있습니다. ( – RichNasser