1

在我的应用程序中,我使用 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];          
 }

有什么线索吗?

4

1 回答 1

1

NSRunAlertPanel 实际上是在调用runModalForWindow:和创建一个模态事件循环。即使点击模态窗口上的确认按钮会关闭窗口,但它不会破坏已创建的模态循环。在您的 return if 语句中尝试这样做:

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

看看这段代码是否停止了内存泄漏。

FWIW,由于您在此方法退出时关闭应用程序,因此最后发生内存泄漏可能不会对事情产生太大影响。

于 2013-07-09T14:21:21.680 回答