-(void)exitApplication { AppDelegate *app = (AppDelegate*)[UIApplication sharedApplication].delegate; //此处如果不强转 AppDelegate,会报警告:Initializing 'AppDelegate *__strong' with // an expression of incompatible type 'id UIWindow *window = app.window; // 动画 1 [UIView animateWithDuration:0.6f animations:^{ window.alpha = 0; window.frame = CGRectMake(0, window.bounds.size.width, 0, 0); } completion:^(BOOL finished) { exit(0);

搞定!!!

程序的死亡大致有三种:自然死亡,即无疾而终,通常就是main()中的一个return 0;自杀,当程序发现自己再活下去已经没有任何意义时,通常会选择自杀。当然,这种自杀也是一种请求式的自杀,即请求OS将自己毙掉方法一. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"退!出!" message:@" 退出 APP " delegat 那怎么才能判断用户下载 APP ,是否有同意使用呢。并且用户卸载重装后仍然会提示用户同意。 我们可以在用户点击同意时,保存一个关键词在本地。根据这个关键词是否存在本地。而提示用户是否同意。这样用户同意之后在下次点击 APP 时就不会提示了。除非用户卸载重装 APP 我的做法是做一个新的页面。这个页面如上图所示,并且该页面为 APP 的首次加载页面。在该页面上做判断。如果存在就导 一般情况下, 退出 应用程序用苹果自带的home键,当然也可以用exit来实现,exit(0)正常 退出 ,exit(1)异常 退出 ,用exit 退出 比较有一种突兀的感觉,没有home键实现的那种平滑,动画的感觉  查了一下资料, 退出 程序如果想要用代码实现的话,最好用assert和abort - (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:(UIButtonTypeCustom)]; [btn setTitle:@" 退出 " forState:(UIControlStateNormal)]; [btn setTitleColor:[UIColor whiteColor] forState:(UIControlStateN. 主要用到了exit(0)函数,代码如下:加了个动画,类似电视荧幕 关闭 的效果 - (void)exit App li cat ion { UIWindow *window = [ UIApp li cat ion shared App li cat ion ].keyWindow; [UIView animateWithDurat ion :0.5f animat ion s:^{ window.al... 一般安卓 app 会使用一个 退出 控件 ,但是这个 退出 控件  出现在苹果 app 上是相当傻的一件事情    exit和abort都是终止程序执行并 退出 的处理函数,其中exit是正常 退出 abort是异常 退出 退出 时会出现错误信息,然后再调用exit 退出 就用户体验来说,exi #pragma mark - exit app animat ion and funct ion /** * 退出 应用动画 */- (void)exit App li cat ion {    [UIView beginAnimat ion s:@"exit App li cat ion " context:nil];    [UIView setAnimat ion Durat ion :0.5];    [UIView setA... - (void)exit App li cat ion { App Delegate * app = [ UIApp li cat ion shared App li cat ion ]. delegate ; UIWindow *window = app .window; [UIView animateWithDurat ion :1.0f animat ion s:^{ window.alpha = 0; window.fr... - (void)exit App li cat ion {        UIWindow *window = [ App Delegate new].window;     [UIView animateWithDurat ion :1.0f animat ion s:^{             window.alpha = 0;     } complet ion :^(B... App Delegate * app =( App Delegate *)[[ UIApp li cat ion shared App li cat ion ] delegate ]; UIWindow *window = app .window; [UIView animateWithDurat ion :1.0f animat ion s:^{ window.alpha = 0; 不过这个 退出 的效果确实很差,感觉就是程序直接崩溃了,而不是开发者蓄意为之。所以如果真用到这个方法,很多开发者都会做个 退出 动画让它看上去好看一些。 下面是网上比较多的一个动画: - (void)exist App 按道理,我们在这个地方去写我们 App 关闭 时的操作就行。 但是,我发现 App 关闭 的时候,并不会走到这里来。 然后我看了下系统的注释:当应用程序即将终止时调用。如果适当的保存数据。可看 app ropriate. See also app li cat ion DidEnterBackgrou... 我们的 APP 有一个功能是 退出 应用,之前交给外包做的时候,他们只负责实现功能,但是没有考虑到功能的优化问题,于是直接用崩溃 退出 的方式。 而我接手之后,有一种更好实现的方法: - (void)exit App li cat ion { //直接退,看起来好像是 crash 所以做个动画 [UIView beginAnimat ion s:@"exit App li cat ion " context:n 起初设置的方法为这个- (void) app li cat ion WillTerminate:( UIApp li cat ion *) app li cat ion { // 业务逻辑 }可是通过测试发现, APP 退出 的时候并不走这个方法 只要添加观察者才会执行这个方法[[NSNotifi cat ion Center defaultCenter] addObserver:self selector:@selector(a