2013-07-09 207 views
1

在我的應用程序中,我使用NSRunAlertPanel來確認用戶退出。NSRunAlertPanel導致內存泄漏

當我在儀器下運行我的應用程序來檢測內存泄漏時,它會在下面的代碼中顯示內存泄漏。

-(void)CloseWithConfirm 
{ 
    int answer; 
    //Here, it is showing memory leak. 
    answer = NSRunAlertPanel (@"Quit Confirmation", @"Do you want to quit?", @"Yes", @"No", @"Cancel"); 

    if(NSAlertDefaultReturn == answer) 
      [self close];   
} 

任何線索嗎?

回答

1

NSRunAlertPanel實際上調用runModalForWindow:並創建一個模態事件循環。即使點擊模態窗口上的確認按鈕也會關閉該窗口,但不會破壞已創建的模態循環。在你的回報如果語句嘗試這樣做:

if (NSAlertDefaultReturn == answer) { 
    [NSApp stopModal]; 
    [self close]; 
} 

看看內存泄漏是否停止與此代碼。

FWIW,因爲當此方法退出時關閉應用程序,最終有內存泄漏,可能不會太多影響事情。

+0

蘋果沒有使用[NSApp stopModal];在那裏有示例項目。 –

+0

感謝MySpecialPurpose的答案。看起來這個內存泄漏現在已經消失了。 – doptimusprime