Modo corretto di uscire dall'applicazione iPhone?


277

Sto programmando un'app per iPhone e devo forzarla ad uscire a causa di determinate azioni dell'utente. Dopo aver ripulito la memoria dall'app allocata, qual è il metodo appropriato da chiamare per terminare l'applicazione?


34
C'è solo un modo corretto - Tasto Home ...
Berillio,

5
L'unica situazione che immagino che chiunque stia pensando di abbandonare programmaticamente è il seguente scenario: L'app si avvia, visualizza i termini d'uso, si rifiuta di accettare e quindi esce dall'app. Questo è qualcosa che i marchi a volte spingono lo sviluppatore a fare. Ma è sbagliato
Daniel,

6
@Daniel Normalmente metti il ​​tuo disclaimer / condizioni d'uso (EULA) su itunes connect quando carichi l'app. Se l'utente scarica l'app, significa che ha accettato il tuo EULA
Paul de Lange il

8
Esistono motivi completamente validi per la necessità di forzare l'uscita da un'app iOS. Il mio caso è che sto distribuendo versioni beta pre-lancio della mia app. Le versioni beta aprono gratuitamente tutti gli IAP. Questi hanno un limite di tempo e devono scadere dopo alcune settimane. Quindi sto usando la risposta qui sotto per uccidere l'app al termine del periodo beta. Lo rimuoverò nella versione LIVE. Ma comunque la risposta mi ha aiutato ed è corretta!
badweasel,

5
Un motivo valido per chiudere un'app è se si tratta di un'app in esecuzione in background di lunga durata e l'app entra in uno stato in cui non è più necessario eseguirla in background. Ad esempio, l'utente si disconnette. In questo caso sarebbe logico uscire in modo che al successivo avvio dell'app inizi a essere pulito. Ciò fungerebbe da rete di sicurezza contro le perdite di memoria, tra le altre ragioni. Nota, in questo caso l'app uscirà dallo sfondo , quindi l'utente non noterebbe nulla di sbagliato.
frankodwyer,

Risposte:


217

Ci hai provato exit(0)?

In alternativa, [[NSThread mainThread] exit]anche se non ho provato che sembra la soluzione più appropriata.


85
Dato che questo è un no-no di Apple (potrebbe causare il rifiuto della tua app nell'app-store per un'interfaccia non standard), considera la risposta di August come "quella giusta". Cordiali saluti, questa risposta (Brett's) è corretta per TUTTI i programmi C e NSThread per tutti i programmi Cocoa.
Olie,

21
In Domande e risposte tecniche QA1561, Apple scoraggia fortemente l'uso dell'uscita in quanto sembra che l'app si sia arrestata in modo anomalo. developer.apple.com/iphone/library/qa/qa2008/qa1561.html
progrmr

8
[[NSThread mainThread] exit] provoca l'arresto anomalo dell'applicazione, poiché exit non è un metodo di istanza. exit (0) invierà l'app in background in iOS 4. Richiamare exit (0) per arrestarla in modo anomalo. Almeno nel simulatore.
user123444555621

10
Capisco perché così tante persone lo stanno sconsigliando, ma che ne dici di dare a noi sviluppatori un po 'di credito? Siamo tutti adulti qui e vogliamo conoscere questa funzione. Lo trovo molto utile per build di QA interne e, quando l'ho cercato per la prima volta, sono stato felice di vedere questa risposta "errata".
evanflash,

7
@Kevin "Non farlo" non è mai la risposta corretta. Se lo desideri, invia avvertenze e dichiarazioni di non responsabilità, ma l'unica risposta corretta a "come posso fare" è "ecco come farlo". Se sto cercando come fare qualcosa (forse voglio forzarlo ad uscire durante il debug), le persone dichiarano giustamente "tu non lo fai!" e cercare di seppellire la risposta di cui ho bisogno è una perdita di tempo. Per quanto molte persone possano avere cattive ragioni per fare qualcosa, la risposta StackOverflow corretta è quella che risponde alla domanda, perché anche le persone con buone ragioni cercheranno di raggiungerla.
Glenn Maynard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.