0

リリースされていないされている。しかし、この方法では、各時間をメモリが割り当てられ、私は削除ボタンがIOSキーボードアプリの拡張に押されたときに呼び出され、以下の方法で持っているたびに呼び出し、非常に簡単な方法

func delete() 
    { 
     dispatch_async(dispatch_get_main_queue(), 
      { 
       for _ in 1..<50 
       { 
        (self.textDocumentProxy as UIKeyInput).deleteBackward() 
       } 
       print("Deletion End") 
     }) 
} 

を私のキーボードのメモリ使用量は1〜2MBアップし、戻ってくることはありません。これにより、すぐにクラッシュが発生します。

私はこのスレッド内のオブジェクトを割り当てたり、割り当てを解除したりしていないので、なぜ大量のメモリリークがあるのか​​わかりません。

UPDATE:

私は静的変数にdispatch_get_main_queue()を変更:

let mainqueue = dispatch_get_main_queue() 

dispatch_get_main_queuemainqueueインプレースを使用しますが、これは何もしませんでした。

UPDATE 2:私はので、これをした

tempProxy.deleteBackward() 

let tempProxy = (self.textDocumentProxy as UIKeyInput) はその後dispatch_asyncに私はこれを使用:

私は毎回削除作成されtempProxyと呼ばれる変数が呼ばれる追加selfへの参照があると、メモリが保持される可能性があると聞きました。

UPDATE 3:

私が変更されました:

(self.textDocumentProxy as UIKeyInput).deleteBackward() 

print()ステートメントに。

メモリ使用量が大幅に減少しました。しかし、なぜメモリがまだリリースされていないのか、私は混乱していました。

答えて

0

私はNSZombieオブジェクトを有効にしましたが、呼び出すたびに永続的なメモリが増えましたdeleteBackward()

関連する問題