首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“主机连接<NSXPCConnection:来自pid 42无效的0x538ee0>连接”用于iOS今天小部件

“主机连接<NSXPCConnection:来自pid 42无效的0x538ee0>连接”用于iOS今天小部件
EN

Stack Overflow用户
提问于 2015-01-05 22:15:04
回答 2查看 5.7K关注 0票数 12

我今天正在开发一个iOS小部件,而且功能非常好。但是,在real iOS设备上运行时,我偶尔会看到:host connection <NSXPCConnection: 0x538ee0> connection from pid 42 invalidated

这似乎不是一个主要的问题,只是当这种情况发生时,小部件似乎几乎会重新加载,偶尔会将今日屏幕中的空间保留为空白,直到iOS重新绘制它并重新加载所有内容。

还有其他人遇到过这个吗?我在我的应用程序中根本没有使用NSXPCConnection,所以我假设这是框架中内置的东西,但我不确定

EN

回答 2

Stack Overflow用户

发布于 2015-02-05 12:17:12

NSXPCConnection API用于在iPhone上执行Xcode与应用程序之间的进程间连接。所以你不用担心这件事。

链接: https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html

因此,您的小部件终止可能有两个原因。

  1. 您需要调用completionHandler(NCUpdateResultNoData);就在您的widgetPerformUpdateWithCompletionHandler被调用之后,即使没有返回响应。
  2. 由于应用程序的自动终止,您的应用程序被终止。它终止小部件/应用程序有两个原因:

它终止未被使用的应用程序,并允许回收内存等资源。 它终止使用过多内存的小部件。

票数 9
EN

Stack Overflow用户

发布于 2015-02-20 22:51:16

最后,我发现了我的小部件的问题。事实证明,这与NSXPCConnection无关,而是代表我对Widget生命周期的误解。

从文档中,我认为今天视图将保持小部件状态的“快照”,直到成功调用widgetPerformUpdateWithCompletionHandler方法完成处理程序为止。

情况似乎并非如此。从我所看到的,‘快照’只是使用时,今天视图是动画(当用户拉下通知中心)。一旦加载并固定了当前视图,您的小部件就会从头开始加载(如果使用xib,则从xib中充气),并调用viewDidLoad。此时,您应该用缓存的数据填充小部件(而不是来自web请求)。如果你不这样做,你会看到你的临时数据从你的笔尖。这就是闪光的原因。

当viewDidLoad完成时,将调用widgetPerformUpdateWithCompletionHandler,这允许您获取新的数据。当获取新的数据时,您应该调用完成处理程序并缓存它的数据,以便以后从零开始加载小部件时(在viewDidLoad中)可以使用它。

缓存数据的一种简单方法是在用户默认值中。

希望这能有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27788833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档