我正在开发一种自定义键盘,其中我可笑地面对内存问题。我做了各种各样的仪器观察,并得出结论,iOS每次键盘出现和无效时都会保留内存。我对这种行为感到非常沮丧,因为在dealloc中我已经释放了所有的DMA,尽管我的项目是在ARC中。
情景是这样的:
When I starts my keyboard for the first time it consumes approximately and after some operation it use to increase upto 30 MB and then I invalidate the keyboard. Again when I'm reloading it at that moment it starts from 30 MB which is totally unexpected and due to which after some transitions there is memory pressure and extension gets crashed.
如果有人能提出一些管理记忆压力的想法,将会非常有帮助。
答案 0 :(得分:0)
这里简短的回答是你有内存泄漏。
如果您在Swift中编写扩展名,请在视图控制器中为deinit
方法添加一个断点,该方法继承自UIInputViewController
并查看是否被调用。
如果您在Objective-C中编写应用程序,那么您可以从解构器中执行相同的操作。
我也非常挣扎于此,根据我的经验,关闭键盘后唯一会留下的是一些Core Data的东西。除此之外,如果所有对象都归主视图控制器(UIInputViewController
)所有,那么如果不再引用它们,它们就会消失。
如果在调用deinit
后仍然看到大量内存被使用,那么您在其他地方就会发生泄漏。注意保留 - 释放周期,并注意Swift中的闭包。这些通常是内存泄漏的罪魁祸首。
在没有看到任何代码的情况下,我无法在此处提供更具体的信息。
祝你好运!