펜촉을로드하기 전에 최대한 빨리 종료하고 싶습니다. 내가 시도한 [NSApp stop:self]
하지만 그 작동하지 않았다. 내 과정을 얻고 그것을 죽이는 것보다 더 좋은 방법이 있습니까? 자세한 내용을 모른 채때로는 내 코코아 앱 실행을 중지하고 싶습니다. 어떻게 init에서 멈추게합니까?
(나는 그것을 할 수있는 이상한 것은 알고있다. 그것은 좋은 이유입니다.)
펜촉을로드하기 전에 최대한 빨리 종료하고 싶습니다. 내가 시도한 [NSApp stop:self]
하지만 그 작동하지 않았다. 내 과정을 얻고 그것을 죽이는 것보다 더 좋은 방법이 있습니까? 자세한 내용을 모른 채때로는 내 코코아 앱 실행을 중지하고 싶습니다. 어떻게 init에서 멈추게합니까?
(나는 그것을 할 수있는 이상한 것은 알고있다. 그것은 좋은 이유입니다.)
, 나는 NSApplicationMain
int main(int argc, char **argv)
{
if(shouldExit() == YES)
{
exit(exitCode);
}
return NSApplicationMain(argc, (const char **) argv);
}
이 작업을 수행 할 수도 있습니다. :) –
'shouldExit()'가 Cocoa 프레임 워크를 사용한다면'NSAutoreleasePool'이 없기 때문에 autoreleased 오브젝트가 누출 될 수 있습니다. –
[[NSRunningApplication currentApplication] terminate];
를 호출하기 전에
main()
에 검사 코드를 넣어 말 것
Apple docs here. forceTerminate
을 사용할 수도 있습니다. nall 님의 제안을 사용할 수도 있지만 앱을 종료해야하는지 확인하기 위해 작업 할 수있는 경우에만 작동합니다 (main()
). 그렇지 않으면 내가 제안한 것의 라인을 따라 뭔가를 더해야 할 것입니다.
당신도 이것을 할 수 있습니다. :) – nall
나는이 방법을 호출 할 수있을 때에는 적어도 앱의 기본 메뉴 인 NIB가로드 될 것이라고 확신합니다. –
nibs가로드되기 전에 (예 :'applicationWillFinishLaunching'에서) 그의 'NSApplicationDelegate' 클래스에서 호출 할 수 있습니다. –
이 메서드를 호출하면 공유 응용 프로그램이 초기화되므로 최소한 MainMenu.nib (또는 응용 프로그램의 기본 메뉴 NIB가 호출 된 것)이로드됩니다. –
당신이 앱의 main()
기능은 "가장 빠른"장소 수정, 쉽게 종료 할 것을 감지 할 수있는 경우 :
int main(int argc, char **argv)
{
id pool = [[NSAutoreleasePool alloc] init]; //needed if shouldExit() uses Cocoa frameworks
@try {
if(shouldExit()) {
exit(0); //appropriate exit code, depending on whether this "fast" exit is normal or exceptional
}
}
@finally {
[pool drain];
}
return NSApplicationMain(argc, (const char **) argv);;
}
NSApplicationMain() 호출 이전에 풀이 빠지지 않아도 상관 없습니까? 또는 그것은 중요하지 않습니까? –
나는 그것이 중요하다고 생각하지 않는다. NSApplicationMain은 다른 자동 회수 풀을 풀 스택으로 푸시합니다. – nall
NSApplicationMain()이 예외를 throw하면 잠재적 인 메모리 누수가 발생할 수 있습니다. 어쨌든 앱이 종료 될 것이므로 문제가되지 않습니다. 하지만 어쨌든 사물을 수정하겠습니다. –
언제 그만 둘 것인지 알고 있습니까? main()에있을 수 있습니까? 플러그인을로드해야합니까? Cocoa 프레임 워크를 사용 하시겠습니까? 누구나 특정 답변을 제공하기 전에 상황에 대해보다 구체적으로 설명해야합니다. –
내 응용 프로그램 대리자 init 메서드에서 종료 생각하고 있었지만 main에서 처리 할 수 있습니다. – zekel