获取 ios 8 自定义键盘扩展的“因内存错误而终止”
Posted
技术标签:
【中文标题】获取 ios 8 自定义键盘扩展的“因内存错误而终止”【英文标题】:Get "Terminated due to Memory error" for ios 8 custom keyboard Extension 【发布时间】:2014-08-17 22:19:38 【问题描述】:我正在开发一个 ios 8 自定义键盘扩展。它运行起来就像一个魅力开始。
但我总是在 Xcode 中收到“接收内存警告”。所以我的自定义键盘扩展有时会突然终止。
但我在其主机应用程序中运行自定义键盘。没有任何问题。不要在 Xcode 中收到“接收内存警告”。不要终止。
有人可以帮助我吗?如果应用对扩展使用有任何限制大小?
【问题讨论】:
我使用github.com/Split82/iOSMemoryBudgetTest 测试我的设备(ipad 3 wifi)。当内存达到 600MB 时,应用程序将崩溃。但是我的自定义键盘扩展只需要将近 30M。 iOS 仍然会给出内存警告。有没有关于这个问题的文档? 我做了更多的测试。我将 iOSMemoryBudgetTest 添加到我的自定义键盘中。我得到的自定义键盘扩展将粉碎达到 40M! 真不知道是不是只有iOS beta 5的这个问题。还是正式版会修复这个问题? Is it possible to debug "Terminated due to memory error"? 的可能副本 @SantaClaus,没有。该主题讨论的是应用而不是扩展 【参考方案1】:Apple 在其App Extension Programming Guide 中提到,应用扩展的内存限制明显低于对前台应用施加的限制。此外,某些类型的扩展程序的限制可能低于其他类型。
据我所知,Apple 并未明确说明这些内存限制,也不清楚它们是否依赖于设备以及其他应用程序消耗了多少内存。但正如 Ethan 提到的,对于键盘扩展,您的目标应该是小于 30MB 以避免崩溃。
在未在 Xcode 中运行或使用调试构建配置时测试扩展也很重要。似乎调试版本的内存限制要高得多。
【讨论】:
Apple 的腼腆很烦人。 Apple,请告诉我们该死的限制是什么! 如果苹果给你limite你会怎么做?监控您的应用程序内存使用情况,如果它达到 X MB,您会做些什么?你已经收到警告了.. 你可以在你的 Xcode 中看到实际的限制。将调试器附加到您的扩展,运行它,转到 Debug Navigator > Memory 并查看 graf(绘图)。如果您接近它,就会出现限制。在我的呼叫目录扩展中,限制为 12MB,这对于我的数万个电话号码来说非常有用。非常感谢苹果。 可以看到内存限制的打印屏幕:eway.cr/xcoderamlimit【参考方案2】:iOS 为扩展分配更少的内存,因为它们应该是轻量级的并且可以做好一件事。我想应该尝试将内存使用限制在 30mb 以下...
【讨论】:
我今天的扩展只使用了3mb,但仍然收到这个错误,你知道为什么吗? 同样的人......我相信调试器的问题而不是内存不足的问题。很难调试扩展...以上是关于获取 ios 8 自定义键盘扩展的“因内存错误而终止”的主要内容,如果未能解决你的问题,请参考以下文章
IOS 8 App Group 访问键盘扩展中的容器应用程序文件