Como posso dizer ao meu pedido de cacau para sair de dentro do próprio aplicativo?

StackOverflow https://stackoverflow.com/questions/1659177

  •  11-09-2019
  •  | 
  •  

Pergunta

Eu estou procurando uma boa maneira de dizer ao meu pedido de cacau para sair em si. Tenha certeza de que isso não vai ser usado para código de produção. Eu estou apenas procurando uma maneira fácil de executar um teste e em seguida, feche a aplicação durante a depuração.

Eu descobri que exit(0); vai fechar o aplicativo, mas ele ignora todos os procedimentos de saída de aplicação normais, e eu gostaria de manter todos eles no lugar.

Basicamente eu quero coisas para trabalhar como se um usuário puxado "Quit" no menu, mas eu quero que isso aconteça automaticamente depois de eu ter acabado com o meu teste.

O meu código atualmente se parece com isso:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
Foi útil?

Solução

Você pode muito bem estar certo de que a sua aplicação vai ser morto, pelo menos por algum tempo. Assim, a defesa contra saídas como a de exit(0); é necessário.

No entanto, NSApplication implementa o método -terminate:.

[NSApp terminate: nil]; deve fazer o que quiser.

Eu geralmente sugiro publicá-la via -performSelector:afterDelay: com um atraso de 0,0 a forçá-lo a acontecer no início da próxima passagem pelo loop evento.

Exemplo:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top