我今天正在开发一个iOS小部件,而且功能非常好。但是,在real iOS设备上运行时,我偶尔会看到:host connection <NSXPCConnection: 0x538ee0> connection from pid 42 invalidated
这似乎不是一个主要的问题,只是当这种情况发生时,小部件似乎几乎会重新加载,偶尔会将今日屏幕中的空间保留为空白,直到iOS重新绘制它并重新加载所有内容。
还有其他人遇到过这个吗?我在我的应用程序中根本没有使用NSXPCConnection,所以我假设这是框架中内置的东西,但我不确定
发布于 2015-02-05 12:17:12
NSXPCConnection API用于在iPhone上执行Xcode与应用程序之间的进程间连接。所以你不用担心这件事。
因此,您的小部件终止可能有两个原因。
它终止未被使用的应用程序,并允许回收内存等资源。 它终止使用过多内存的小部件。
发布于 2015-02-20 22:51:16
最后,我发现了我的小部件的问题。事实证明,这与NSXPCConnection无关,而是代表我对Widget生命周期的误解。
从文档中,我认为今天视图将保持小部件状态的“快照”,直到成功调用widgetPerformUpdateWithCompletionHandler方法完成处理程序为止。
情况似乎并非如此。从我所看到的,‘快照’只是使用时,今天视图是动画(当用户拉下通知中心)。一旦加载并固定了当前视图,您的小部件就会从头开始加载(如果使用xib,则从xib中充气),并调用viewDidLoad。此时,您应该用缓存的数据填充小部件(而不是来自web请求)。如果你不这样做,你会看到你的临时数据从你的笔尖。这就是闪光的原因。
当viewDidLoad完成时,将调用widgetPerformUpdateWithCompletionHandler,这允许您获取新的数据。当获取新的数据时,您应该调用完成处理程序并缓存它的数据,以便以后从零开始加载小部件时(在viewDidLoad中)可以使用它。
缓存数据的一种简单方法是在用户默认值中。
希望这能有所帮助。
https://stackoverflow.com/questions/27788833
复制相似问题