我正在编程一个iPhone应用程序,我需要强制它退出由于某些用户操作。在清理应用程序分配的内存后,调用什么方法来终止应用程序?
当前回答
你的ApplicationDelegate收到用户有意退出的通知:
- (void)applicationWillResignActive:(UIApplication *)application {
当我收到通知时,我就打电话
exit(0);
它做了所有的工作。最好的事情是,它是用户退出的意图,这就是为什么在那里调用它应该不是问题。
在我的音频应用中,当人们同步他们的设备而音乐仍在播放时,有必要退出应用。一旦同步完成,我就会收到通知。但在此之后立即退出应用程序实际上看起来像崩溃。
所以我设置了一个标志,在下一次背景操作时真正退出应用程序。这对于同步后刷新应用程序是可以的。
其他回答
在iPhone上,没有退出应用的概念。导致应用退出的唯一操作是触摸手机上的Home键,而这不是开发者可以访问的。
根据苹果公司的说法,你的应用程序不应该自行终止。因为用户没有点击Home键,所以任何返回到Home屏幕的操作都会给用户留下应用程序崩溃的印象。这是令人困惑的,不规范的行为,应该避免。
去你的信息。plist并检查关键“应用程序不运行在后台”。这一次,当用户单击home按钮时,应用程序将完全退出。
用home键以外的其他方式退出应用程序真的不是ios风格的方法。
我做了这个助手,虽然,没有使用私人的东西:
void crash()
{ [[NSMutableArray new] addObject:NSStringFromClass(nil)]; }
但对我来说还是不适合生产。它用于测试崩溃报告,或在核心数据重置后快速重新启动。只是使它安全不被拒绝,如果功能留在生产代码。
在application-info上添加UIApplicationExitsOnSuspend属性。请承认是真的。
[[UIApplication sharedApplication] terminateWithSuccess];
它工作正常,自动调用
- (void)applicationWillTerminateUIApplication *)application delegate.
要删除编译时警告,请添加以下代码
@interface UIApplication(MyExtras)
- (void)terminateWithSuccess;
@end
推荐文章
- 如何删除默认的导航栏空间在SwiftUI导航视图
- 如何在iOS中使用Swift编程segue
- Swift -整数转换为小时/分钟/秒
- Swift:声明一个空字典
- 为什么ARC仍然需要@autoreleasepool ?
- 在成功提交我的应用程序后,“太多符号文件”
- 首先添加一个UIView,甚至是导航栏
- 我如何改变UIButton标题颜色?
- 如何从UIImage (Cocoa Touch)或CGImage (Core Graphics)获取像素数据?
- 在Swift中如何调用GCD主线程上的参数方法?
- NSLayoutConstraints是可动画的吗?
- iOS -构建失败,CocoaPods无法找到头文件
- Xcode 4挂在“附加到(应用程序名称)”
- CFNetwork SSLHandshake iOS 9失败
- 请求失败:不可接受的内容类型:文本/html使用AFNetworking 2.0