2011-12-21 2 views
0

UIPickerView와 같은 UI 객체 (예를 들어)는 자주 할당되고 해제되며, 해당 dealloc 메서드가 호출 되더라도 (Instruments를 사용하여 증명 됨) 힙이 계속 증가한다는 것을 알게되었습니다.iOS - 메모리 정리를 트리거 할 수있는 방법이 있습니까?

전체 시나리오를 개선하기 위해 자동 복구 풀 최적화를 트리거 할 수있는 방법이 있습니까?

내 응용 프로그램은 사진을 찍고, 사진을 관리하고 서버에 업로드해야합니다. 일정 기간 동안 힙은 커지며 마침내 응용 프로그램이 충돌합니다. ** 악기의 사용으로 명백한 메모리 유출이 없음을 확인했습니다. *.

어떤 도움이나 제안이 있으십니까?

감사합니다.

+0

현재 ARC를 사용하고 있습니까? –

+0

ARC 기능을 사용해보십시오. 이전 스타일을 ARC 환경으로 변환하는 Xcode에는 굴절 기 메뉴가 있습니다. – Sakares

답변

0

애플리케이션에서 의미가있는 위치에 자동 복구 풀을 만들 수 있습니다. 자동 릴리즈 풀을 생성하는 다음과 같은 방법은 ARC의 유무와 상관없이 작동합니다.

// Stuff you plan to keep around after finishing the block below 
@autoreleasepool { 
    // Load an image, send to server 
} 
// The images are released 

메모리가 손에 닿지 않는 것처럼 들리는 것 같습니다. 기본 UI 실행 루프에서 작업을 수행하는 경우 autorelease가 매우 규칙적으로 발생해야하므로 다른 autorelease 풀이 도움이 될지 확신 할 수 없습니다. 아마도 당신은 여전히 ​​사용할 수 있기 때문에 그들이 공개되지 않는 방식으로 참조를 유지하고있을 것입니다. 개체가 배열, 집합 및 사전에서 제거되지 않기 때문에 많은 누수가 발생합니다.

관련 문제