天天看点

代码退出IOS中Appapp想要主动退出,不通过按Home键,该怎么做?

app想要主动退出,不通过按Home键,该怎么做?

1: exit(0);

   此方法可能已被苹果禁用,不行的话可以采用下面的方法;

2    [ self   performSelector : @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);

return0;

}

结果是,会打印"catch signal",然后还是coredump了。原因是:abort()函数里面先给自己发送SIGABRT保证handler执行,然后再重新注册了SIGABRT,会修改成默认行为,再次给自己发送SIGABRT,保证执行默认行为,coredump。同时,还会flush所有打开的文件,然后关闭掉。

继续阅读