我遇到了iOS键盘扩展的内存问题。我有键盘视图的自定义视图。我在UIInputViewController的 loadView ()函数中初始化它。然后将其作为孩子添加到 self.view 。但我有一个内存问题,特别是在WhatsApp应用程序中。键盘扩展连续4-5次崩溃后隐藏/显示键盘操作。我从Instruments app启动了内存分配图形。我看到内存使用量的大小每增加一个" show"键盘操作并超出内存限制(我认为它的30-40 MB)。我的自定义键盘视图对象分配太多了。
为简化问题:
我创建了一个新的Xcode项目,并使用编辑器>添加了一个新的自定义键盘扩展目标。添加目标>自定义键盘扩展。
然后,我在我的真实设备上运行了默认的模板化键盘(在模拟器中没有发生)。我打开仪器>分配应用程序以分析扩展的内存分配。
当我在 WhatsApp 上尝试键盘时,我注意到通过点击键盘外部并点击输入来隐藏/取消隐藏键盘时,Persistent ViewController对象的数量增加了区域。
持久性KeyboardViewController的数量:
2 - 隐藏 - > 1 - 显示 - > 3 - 隐藏 - > 2 - 显示 - > 4(增加)
我在iOS 消息应用上尝试了键盘。而且没有重复。
1 - 隐藏 - > 0 - 显示 - > 1 - 隐藏 - > 0(确定)
你对这个问题有什么看法吗?为什么WhatsApp应用程序会复制键盘扩展名viewController。