1

我使用下面的代碼(使用ARC)呈現UIActivityViewController:UIActivityViewController存儲器泄漏

- (IBAction)share:(id)sender { 
UIActivityViewController *activityController = [[UIActivityViewController alloc] 
               initWithActivityItems:[NSArray arrayWithObjects:@"Cat",@"Dog" , nil] 
               applicationActivities:nil]; 

[self presentViewController:activityController animated:YES completion:nil];} 

上iphone模擬器儀器「泄漏」運行該程序。 呈現視圖,單擊後取消: 在以下行獲取泄漏(100%):

[self presentViewController:activityController animated:YES completion:nil]; 

我在做什麼錯?

+0

確保泄漏發生在iPhone/iPad上,我遇到了幾個在模擬器中報告泄漏的情況,只是在設備上運行時纔會消失。其次,問題可能在於,如果您以無法正確移除活動控制器的方式解僱活動控制器,請檢查在取消後如何移除活動控制器。 – Nuoji

回答

0

allocARC自動平衡。但是將activityController交給自己增加引用計數,並將該對象放入autorelease pool(如果存在)。所以,如果你的代碼運行在沒有autorelease pool的線程中,這個對象將會泄漏。

+0

代碼在主線程中運行,主線程默認在main.m中創建的autoreleasepool中運行。我使用xcode創建了基於ios arc應用程序的單個視圖,並且我添加的所有按鈕都是用於運行上述共享操作的按鈕。泄漏仍然發生。 – Matthias

+0

你說得對。泄露的對象是一個OS_dispatch_queue。我想你應該向蘋果公司報告。 –