每次调用非常简单的方法分配内存而不释放内存

Memory being allocated and not released each time call very simple method

我有以下方法,当在 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() 语句。

内存使用量现在少了很多。但是,我很困惑为什么内存仍然没有被释放。

原来我启用了 NSZombie 对象,每次调用 deleteBackward()

时都会增加永久内存