在我的应用程序中,我使用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];
}
有什么线索吗?
答案 0 :(得分:1)
NSRunAlertPanel实际上正在调用runModalForWindow:
并创建一个模态事件循环。即使按下模态窗口上的确认按钮也会关闭窗口,但它不会破坏创建的模态循环。在你的return if语句中尝试这样做:
if (NSAlertDefaultReturn == answer) {
[NSApp stopModal];
[self close];
}
使用此代码查看内存泄漏是否停止。
FWIW,因为当这个方法退出时你正在关闭应用程序,最后一个内存泄漏可能不会影响太多。