我是IOS开发的新手。我仍然对UIViewController中的数据生命周期感到困惑。如果我有一个名为“userData”的属性,我将其标识为以下
let userData : UserData! {
didSet {
// do something
}
}
我用这个数据来处理点击事件。如果应用程序转到后台然后 - 1小时后会发生什么情况 - 用户重新打开应用程序并发现页面仍显示内容,然后他单击页面内的按钮。我不确定是否会保留userData,或者当它转到后台时页面是否会丢失!?
我的应用程序崩溃,当我稍后来打开它,但我不确定是否是因为识别这样的变量
答案 0 :(得分:0)
术语背景令人困惑。 Apple通常使用它来表示一个状态,你的应用程序仍在处理器时间,但另一个应用程序是最前面的。当用户点击主页按钮时,您必须询问是否需要超过几秒的后台时间。
如果用户按下主页按钮,然后切换到另一个应用程序,您的应用程序将获得几秒的后台时间来保存它的状态,然后它会移动到"暂停"状态,它仍在内存中,但不再需要处理器时间。
一旦您被暂停,如果用户在仍在内存中时切换回您的应用,则会收到恢复消息,然后您继续运行,内存中的所有内容仍在内存中。
但是,一旦您被暂停,您的应用可以在此之后的任何时间终止,而不会发出任何警告。这就是您在被停用时必须保存应用状态的原因。
如果您确实被终止,那么下次用户选择您的应用时,您将重新启动。您通常希望恢复状态并使其看起来像应用程序只是在它停止的地方拾取,但它是冷启动。
如果您的应用程序恢复(未终止)后崩溃,那么您可能需要帮助调试该崩溃。