ios - Today Extension Ivars 是否不断重置?

标签 ios cocoa-touch ios8 ios8-extension ios8-today-widget

我正在向新的 iOS 8 Today 小部件编写代码,但我注意到每次 widgetPerformUpdateWithCompletionHandler:被称为我的 ivars(从 @property 创建)被重置。就像每次实例化一个新的 View Controller 一样。

这使得在对小部件的更新之间无法将数据保存在内存中(例如,当它在后台并被调用以更新其内容时)。

这是正常行为还是错误?我应该将我的简单数字保存到 NSUserDefaults而不是依赖正在重置的基于内存的数据?

最佳答案

您的分机将不会在两次调用 widgetPerformUpdateWithCompletionHandler: 之间运行.当 iOS 在后台启动您的扩展程序以获取新数据时,将调用该方法。然后,操作系统会捕获您的扩展程序的图像(这就是完成处理程序的用途),以显示为您的扩展程序的一种“启动屏幕”(当通知中心启动时,您的扩展程序不会立即可用,因此它会显示图像直到它是)。您可能想使用 NSUserDefaults (或其他方法)在等待来自服务器的更新数据时存储要加载的缓存数据。

换句话说,操作系统会定期启动您的应用程序,让您获取新数据,以便用户始终在通知中心看到更新的数据。您应该在该方法中缓存此数据,以便在为通知中心启动扩展程序时可以更快地加载扩展程序。这都是讨论here .

关于ios - Today Extension Ivars 是否不断重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269285/

相关文章:

IOS8:录制到文件并使用 AVCaptureSession/commitConfiguration 时相机预览闪烁

ios - 以编程方式创建 .xls 文件

iphone - 委托(delegate)正在通过我的应用程序记录非公开事件 : can those events be detected?

iphone - 了解用于查找内存泄漏的 'leaks' 命令行实用程序

ios - 未调用 UIPinchGestureRecognizer

ios - SpriteKit 中的动画路径绘制

ios - map 返回错误,而长格式 swift 成功

ios - UIScrollView:水平分页,垂直滚动?

javascript - Cordova 应用终止事件

ios - 在 iOS8 中旋转时调整工具栏的大小