1. 程式人生 > >程式碼退出IOS中App

程式碼退出IOS中App

app想要主動退出,不通過按Home鍵,該怎麼做?

1:exit(0);

   此方法可能已被蘋果禁用,不行的話可以採用下面的方法;

2   [selfperformSelector:@selector(aMethodNotExist) withObject:nil];    呼叫一個不存在的方法,引發程式異常退出; 3: abort();       引發不正常程序的終止。
因為呼叫abort()而終止,那麼是因為某些條件成立,而使用者不得不作出終止當前程序的決定(參考assert()),abort()行為本身並不異常,如果使用者呼叫了,那麼程序就終止,完全是預期的行為。原理上來說,abort通過給自己傳送SIGABRT訊號,然後kernel會殺掉自己,並coredump。但是,如果使用者重新定義了SIGABRT訊號的行為呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<stdlib.h> #include<signal.h> #include<stdio.h> #include<assert.h> voidhandler(inti) { printf("catchsignal\n"); } intmain() { signal(SIGABRT,handler); abort(); while(1);/*Thisisneverreached*/ return0;
}
結果是,會列印"catch signal",然後還是coredump了。原因是:abort()函式裡面先給自己傳送SIGABRT保證handler執行,然後再重新註冊了SIGABRT,會修改成預設行為,再次給自己傳送SIGABRT,保證執行預設行為,coredump。同時,還會flush所有開啟的檔案,然後關閉掉。