iOS退出APP


  • 強制退出有四種:
    • 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]; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM