iOS键盘扩展以“每进程限制”终止

时间:2014-12-03 00:27:33

标签: ios objective-c ios8 iphone-6 ios-keyboard-extension

我正在尝试为iOS 8开发一个键盘扩展。除了我遇到的各种问题(这显然扩展只是一个想法),在开始测试iPhone 6之后,我发现了扩展随机终止,崩溃日志的条目如下:

 Name       |            <UUID>                |     CPU Time|     rpages|       purgeable| recent_max| lifetime_max| fds |  [reason]         | (state)
 MyKeyboard <93dea1cc8757387ba5e7da3006a7d23f>         0.638       13072                0           -          8483   50  [per-process-limit]  (frontmost)

请注意,这种情况发生在iPhone 6和iPhone 6 plus上,但不会发生功能较弱(内存较少,但不是64位)的iPhone 4S。

当然,在设备上进行调试时不会发生这种情况。

此外,如果我运行与应用程序完全相同的代码而不是扩展名,则不会发生这种情况。

终止似乎主要发生在使用Quartz绘制的线条时,或者更容易使用Apple的CoreTextArcCocoa类的派生,使用呈现为弧形的属性字符串。 分析器显示从不存在CPU使用率,应用程序中的RAM使用率为15-25MB。当我使用其中几个弧文本视图(主要与属性字符串相关)时,有很多分配/解除分配,所以我想也许快速分配(即使它们后面是解除分配)触发一些iOS进程终止扩展,因为担心占用太多内存?但是,如果我不知道确切的触发器,如何围绕它进行编码?当然,我无法想到调试此问题的方法,因为它不在我的应用程序之外。 我尝试使用我的一个开发者计划门票与Apple打开一张关于它的门票。我要求任何形式的帮助,甚至只是更好地解释“每个进程限制”。他们关闭并退还,没有回应。我重新打开至少要求关闭第一张票的原因,他们关闭了并退还了。 关于究竟发生了什么或者我可以尝试什么的任何想法?

此处参考是来自同一崩溃日志的完整mem统计信息:

Free pages:                              9054
Active pages:                            122754
Inactive pages:                          48617
Speculative pages:                       235
Throttled pages:                         0
Purgeable pages:                         4696
Wired pages:                             67788
File-backed pages:                       81292
Anonymous pages:                         90314
Compressions:                            15775
Decompressions:                          3940
Compressor Size:                         1364
Uncompressed Pages in Compressor:        4383
Page Size:                               16384
Largest process:   backboardd

1 个答案:

答案 0 :(得分:4)

看起来键盘扩展没有未记录的内存限制。它大约40Mb。你的键盘采用了rpages * 4kb = 51Mb