문제

애플리케이션이 종료될 때 실행해야 하는 일부 코드가 있습니다.다음과 같이 NSApplicationWillTerminateNotification에 대한 컨트롤러를 등록합니다.

[[NSNotificationCenter defaultCenter] 
    addObserver: self
       selector: @selector(applicationWillTerminate:)
           name: NSApplicationWillTerminateNotification
         object: nil];

이제 앱을 시작하고 처음 20초 이내에 종료하면 applicationWillTerminate 호출됩니다.나중에 응용 프로그램을 종료하면 그렇지 않습니다.내 응용 프로그램에서 이 동작이 발생할 수 있는 이유는 무엇입니까?또한 내 컨트롤러를 동일한 결과를 갖는 NSApplication의 대리인으로 설정하려고 했습니다.어떤 아이디어가 있나요?

감사해요.

아, 그리고 이것은 10.5 SDK를 사용하는 XCode 3.2, Snow Leopard 10.6.1입니다.디버그 및 릴리스 빌드 모두에서 발생합니다.

도움이 되었습니까?

해결책

이런 일이 발생하는 데에는 여러 가지 이유가 있습니다.

GC'd를 실행하는 경우 종료가 발생하기 전에 관찰자가 수집되고 마무리됩니까?(이것을 테스트하고 버그가 발생하면 최소한 문서화해야 합니다.)

앱이 자동으로 충돌을 일으키거나 직접 종료()를 호출합니까?

일반적으로 사용자가 강제로 종료할 수도 있으므로 종료 알림이 수신될 것이라고 기대할 수는 없습니다.

또한 Snow Leopard에는 갑작스런 종료라는 기능이 있어 앱이 정상적인 종료 리가마롤을 거치지 않고 앱을 종료해도 안전하다는 것을 시스템에 알릴 수 있습니다.에 문서화되어 있습니다. NSProcessInfo 선적 서류 비치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top