2011-08-04 20 views
0

我有一個MFMailComposeViewController對象,我在我的電子郵件按鈕的回調中發佈,僅僅是因爲我創建了它,而且我認爲我這樣做是間歇性的,但並不總是崩潰我的應用程序。如何使用Xcode檢測對象的雙重釋放?

如何使用Xcode的檢測程序來檢測這種情況?

謝謝。

回答

0

可以設置NSZombieEnabled環境變量YES產品>修改方案...,選擇運行(產品名稱),點擊參數選項卡,並設置環境變量列表)。使用NSZombie時,對象不會被釋放,而會變成殭屍。向他們發送消息會向控制檯記錄一個錯誤,而不是與EXC_BAD_ACCESS崩潰。通過這種方式,你可以發現是否真的是造成麻煩的MFMailComposeViewController

但是保留和釋放視圖控制器可能甚至沒有必要。如果您在創建後立即提供了MFMailComposeViewController,並且在解散之後不再使用它,則無需保留它:

- (IBAction)composeMessage:(id)sender { 
    MFMailComposeViewController *mailComposeViewController = [[[MFMailComposeViewController alloc] init] autorelease]; 
    mailComposeViewController.mailComposeDelegate = self; 
    [self presentModalViewController:mailComposeViewController animated:YES]; 
} 

- (void)mailComposeController:(MFMailComposeViewController *)mailComposeViewController didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
    // Present error to the user if failed 
    [self dismissModalViewControllerAnimated:YES]; 
}