2013-07-09 60 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