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 인플레 이스를 사용하지만이 아무 짓도 안 했어요.

업데이트 2 : 나는 때문에 이런 짓을

tempProxy.deleteBackward() 

: 다음 dispatch_async에 내가 이것을 사용

let tempProxy = (self.textDocumentProxy as UIKeyInput) : 나는라고 삭제할 때마다 생성됩니다 tempProxy라는 변수를 추가

self에 대한 참조가 있으면 메모리가 유지 될 수 있다고 들었습니다.

UPDATE 3 :

내가 변경하십시오 print()

(self.textDocumentProxy as UIKeyInput).deleteBackward() 

.

메모리 사용량이 훨씬 적습니다. 그러나 메모리가 아직 공개되지 않은 이유에 대해 혼란 스러웠습니다.

답변

0

밝혀졌습니다. 전화 할 때마다 NSZombie 객체가 활성화되어 영구 메모리가 증가했습니다. deleteBackward()