2013-07-09 5 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:을 호출하고 모달 이벤트 루프를 만듭니다. 모달 창에서 확인 버튼을 누르면 창이 닫히지 만 생성 된 모달 루프는 소멸되지 않습니다. return if 문에서 다음을 수행하십시오.

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

이 코드로 메모리 누수가 중지되는지 확인하십시오.

FWIW,이 방법을 종료 할 때 앱을 닫으므로 끝에 메모리 누수가 발생해도 문제가되지 않을 수 있습니다.

+0

사과가 [NSApp stopModal]을 사용하고 있지 않습니다. 거기에 샘플 프로젝트. –

+0

답에 MySpecialPurpose를 주셔서 감사합니다. 이 메모리 누수가 이제 사라진 것 같습니다. – doptimusprime

관련 문제