2010-06-17 5 views
0

이미 개발되었지만 개발 단계에서 메모리 관리가 고려되지 않은 앱을 만들고 있습니다. 그래서 메모리 경고가 발생하는 즉시 App 메모리 사용량을 낮게 유지하려면 어떻게해야합니까? 사용하지 않는 메모리를 해제하는 데 사용할 수있는 일반 도구 또는 코드가 있습니까?아이폰 메모리 문제

답변

1

두 가지.

먼저보기 계층 구조 (탭 표시 줄, UINavigationController 등)를 사용하는 경우 메시지가 위쪽으로 전파됩니다. 즉, 루트 레벨 UIViewController 하위 클래스의 메모리 메시지 핸들러 하나가 전체 앱의 메모리 이벤트를 처리 할 수 ​​있다는 것을 의미합니다. 이는 매우 편리합니다.

둘째로, 너는 낮은 매달린 과일을 가고 싶다. 애플 리케이션에서 나는 현재 내 애플 리케이션 데이터를 포함하는 두 개의 서로 다른 배열을 가지고있다. 그리고 그 각각의 딕트는 썸네일과 더 큰 이미지를 포함하고있다. 분명히 그것들은 제가 기억하고있는 비트의 대부분을 구성합니다. 따라서 루트 뷰 컨트롤러가 메모리 경고를받을 때 가장 먼저하는 일은 해당 데이터 세트를 거쳐 해당 이미지를 nil으로 설정하는 것입니다. 유지 된 속성이기 때문에 setter가 호출되고 이미지가 메모리에서 해제 될 때 해제됩니다. 그런 다음 필자는 뷰 컨트롤러에서 이미지 필드의 무결성을 확인하고 서버에서 다시로드 할 수있는 기능을 제공합니다.

그건 그렇고 (괜찮아 ... 두 가지와 "by-way"), 메모리 경고는 문제가되지 않습니다. 어떤 사람들은 그 (것)들을 얻기에 관하여 나쁘게 느끼고, 결코 그들의 것을 얻지 않기 위하여 그들의 app에 관하여 모두를 재 설계하고 싶다. 그건 꼭 필요한 것은 아닙니다. 심지어 가장 잘 디자인 된 앱조차도 때때로 장치에 관한 백그라운드 앱의 예측 불가능 성 때문에 때때로 메모리에 관해 경고를 받게 될 것입니다. 중요한 것은 잘 처리하는 것입니다.

0

당신은 방법 당신의 UIViewControllers의

- (void)didReceiveMemoryWarning 

을 살펴 있어야합니다. 이 메서드는 메모리 경고를 받으면 호출됩니다. 여기에서는 현재 사용되지 않은 객체를 해제 할 수 있습니다. 그러나 무엇이 사용되고 무엇이 아닌지를 결정하는 것은 당신의 부분입니다.

XCode의 "빌드 및 분석"기능은 코드에 명백한 메모리 누수가 있는지 확인하는 데 사용할 수있는 도구입니다.

당신은의 UIViewController 클래스 참조에있는 작은 부분의 "메모리 관리"를 살펴해야

: 은 또한 중요한 문서는 "메모리 관리 프로그래밍 가이드"입니다 http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html