iOS强制退出APP

作者: WorldPeace_hp | 来源:发表于2017-12-19 19:48 被阅读125次
    强制退出有四种:
    • exit();
    • abort();
    • assert();
    • 主动制造一个崩溃;
    exit()

    1.附加了关闭打开文件与返回状态码给执行环境,并调用你用atexit注册的返回函数;
    2.警告:不要使用exit函数,调用exit会让用户感觉程序崩溃了,不会有按Home键返回时的平滑过渡和动画效果;
    3.另外,使用exit可能会丢失数据,因为调用exit并不会调用-applicationWillTerminate:方法和UIApplicationDelegate方法;

    - (void)exitApplication {    
        [UIView beginAnimations:@"exitApplication" context:nil];    
        [UIView setAnimationDuration:0.5];    
        [UIView setAnimationDelegate:self];    
        [UIView setAnimationTransition:UIViewAnimationCurveEaseOut forView:self.window cache:NO];    
        [UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)];    
        self.window.bounds = CGRectMake(0, 0, 0, 0);    
        [UIView commitAnimations];    
    }  
    - (void)animationFinished:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {    
        if ([animationID compare:@"exitApplication"] == 0) {    
            exit(0);    
        }  
    } 
    
    exit(1)是异常退出;
    exit(0)是正常退出;
    
    abort()

    1.这是默认的程序结束函数,这种方式可能会或可能不会以刷新与关闭打开的文件
    或删除临时文件,这与你的设计有关。
    2.abort就像是点击了home键有过渡动画,使用的时建议选择abort();

    abort();
    
    assert()

    1.assert(1)为oc中的宏,只在debug模式下有用,当条件成立时,程序不会终止掉;当条件不成立时,程序终止。
    2.oc程序中建议用assert(condition)函数,推荐使用assert宏;
    3.方法未实现完,放个ASSERT(0)调试运行时执行到此为报错中断,好知道成员函数还没写完。
    4.另一种情况是预防性的错误检查,在认为不可能的执行到的情况下加一句ASSERT(0),如果运行到此,代码逻辑或条件就可能有问题。

    assert(0);
    //作用是现计算表达式expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行
    assert(1);
    //为oc中的宏,只在debug模式下有用,当条件成立时,程序不会终止掉;当条件不成立时,程序终止。
    
    主动制造一个崩溃
    [[NSArray array] objectAtIndex:5];
    

    相关文章

      网友评论

        本文标题:iOS强制退出APP

        本文链接:https://www.haomeiwen.com/subject/jlyiwxtx.html