ryn*_*019 12 widget objective-c ios
我正在开发一个iOS今天的小部件,而且功能非常强大.但是,在真正的 iOS设备上运行时,我偶尔会看到:
host connection <NSXPCConnection: 0x538ee0> connection from pid 42 invalidated
这似乎不是一个主要的问题,除了在发生这种情况时窗口小部件似乎几乎重新加载,偶尔会将今日屏幕中的空格留空,直到iOS重绘它并重新加载所有内容.
有人遇到过这种情况么?我在我的应用程序中根本没有使用NSXPCConnection,所以我假设这是构建在框架中的东西,但我不确定
NSXPCConnection API用于在Xcode客户端和iPhone上的应用程序之间执行进程间连接.所以你不必担心这个.
链接: https ://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html
因此,可能有两个原因导致窗口小部件被终止.
你需要调用completionHandler(NCUpdateResultNoData); 即使尚未返回响应,也会在调用widgetPerformUpdateWithCompletionHandler之后立即调用.
您的应用因终止自动应用而终止.它终止了小部件/应用程序有两个原因:
一个.它终止未使用的应用程序并允许回收内存等资源.
湾 它终止了使用太多内存的小部件.
最后找出了我的小部件问题.事实证明这与NSXPCConnection无关,而是代表我对Widget生命周期的误解.
从文档中我认为今天的视图将保持我的窗口小部件状态的"快照",直到成功调用widgetPerformUpdateWithCompletionHandler方法完成处理程序.
似乎并非如此.从我所看到的情况来看,"今日视图"动画时(当用户拉下通知中心时)就会使用"快照".加载今天视图并静止后,您的小部件将从头开始加载(如果使用则从xib中膨胀)并调用viewDidLoad.此时,您应该使用缓存数据(而不是Web请求)填充窗口小部件.如果不这样,您将看到笔尖的临时数据.这是导致闪烁的原因.
当viewDidLoad完成时,将调用widgetPerformUpdateWithCompletionHandler,它允许您获取新数据.获取新数据时,您应该调用完成处理程序并缓存数据,以便稍后从头开始加载窗口小部件时可以使用它(在viewDidLoad中).
缓存数据的简单方法是用户默认值.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5410 次 |
| 最近记录: |