好的,这是非常基本的,但我一遍又一遍地阅读文档,并希望确保我已经做到了这一点。用简单的语言,我的watchkit应用程序将被退出我的代码外部的应用程序的一些用户交互关闭,对吧?我不需要通过任何类型的关闭程序来清除或重置屏幕,以便为另一次运行设置它?我不需要建立一个"退出"或"关闭应用程序"例行公事,对吗?这令人困惑,因为文档暗示一旦应用程序不再在屏幕上(可能是用户操作,例如刷到另一个应用程序),该应用程序将停用,并且这将调用 didDeactivate 功能。但文件还声称:
在iOS模拟器中,WatchKit为当前调用didDeactivate方法 通过选择硬件>锁定模拟器时的接口控制器锁。 当您随后解锁模拟器时,WatchKit会调用该接口 控制器将再次激活方法。您可以使用此功能进行调试 您的激活和停用代码。
但模拟器似乎没有以任何方式解除分配内存或重置变量或重置我的应用程序。它在锁定时的状态下仍保持在屏幕上,当我解锁时它返回到该状态。令我担心的是,如果我错了,我会为一次运行构建一个应用程序。但是,我没有看到关闭,屏幕清除或传统关机程序中您期望的任何元素的例行程序。
答案 0 :(得分:1)
我同意文档可能令人困惑。考虑它的最简单方法是,只要显示/激活接口控制器,就会调用willActivate。同样,只要隐藏/停用didDeactivate,就会调用didDeactivate。因此,如果你翻阅控制器页面,每个控制器会在显示时收到一个willActivate,当它消失时会收到一个didDeactivate。同样,如果由于应用程序不再可见而停用控制器(例如,它已被暂停),则会调用didDeactivate。如果用户然后抬起手腕以恢复应用程序,则会调用willActivate,因为正在显示界面控制器。
对于您的WatchKit应用程序是否将被暂停或终止(由操作系统决定)没有任何承诺,因此您必须考虑这两种可能性。根据经验,我知道放弃你的手臂会在暂停你的应用程序之前调用didDeactivate。如果您再抬起手腕,应用程序将恢复并呼叫willActivate。在我的测试中,在这种情况下,应用程序被暂停(未终止)。
你是正确的,没有在应用程序终止时调用的内置方法。但是,iOS 8.2添加了四个可用于监控应用程序/扩展程序状态的通知: