在 IOS 键盘应用程序扩展中按下删除按钮时,我有以下方法被调用:
func delete()
{
dispatch_async(dispatch_get_main_queue(),
{
for _ in 1..<50
{
(self.textDocumentProxy as UIKeyInput).deleteBackward()
}
print("Deletion End")
})
}
但是,每次调用此方法时,我的键盘内存使用量都会增加 1-2mb 并且不会回落。这很快就会导致崩溃。
我没有在这个线程中分配或取消分配任何对象,所以我不确定为什么会出现大量内存泄漏。
更新:
我改为dispatch_get_main_queue()
静态变量:
let mainqueue = dispatch_get_main_queue()
并用于mainqueue
代替,dispatch_get_main_queue
但这并没有做任何事情。
更新 2:
我添加了一个名为的变量tempProxy
,每次调用 delete 时都会创建该变量:
let tempProxy = (self.textDocumentProxy as UIKeyInput)
然后在dispatch_async
我用这个:
tempProxy.deleteBackward()
我这样做是因为我听说引用self
可能会导致内存保留。
更新 3:
我变了:
(self.textDocumentProxy as UIKeyInput).deleteBackward()
到一个print()
声明。
内存使用量现在少了很多。但是,我对为什么仍然没有释放内存感到困惑。