오늘의 지식: iOS 메모리 부족 경고에 대한 대응
시스템에서 메모리가 부족하면 앱에 경고를 보냅니다.
개요
시스템에 여유 메모리가 부족하고 일시 중단된 앱을 종료하여 메모리를 회수할 수 없는 경우, UIKit은 실행 중인 앱에 메모리 부족 경고를 보냅니다. UIKit은 다음과 같은 방법으로 메모리 부족 경고를 보냅니다.
- UIApplicationDelegate의
applicationDidReceiveMemoryWarning(_:)
메서드를 호출합니다. - UIViewController의
didReceiveMemoryWarning()
메서드를 호출합니다. - 등록된 옵저버에
didReceiveMemoryWarningNotification
노티피케이션을 보냅니다. - 디스패치 큐에
DISPATCH_SOURCE_TYPE_MEMORYPRESSURE
를 보냅니다.
앱에서 메모리 부족 경고를 받으면 최대한 빨리 메모리를 확보해야 합니다. 디스크 상에 기록되어 있거나 나중에 다시 로드할 수 있는 이미지, 미디어 파일, 대용량 파일에 대한 참조를 제거합니다. 더 이상 사용하지 않는 임시 객체에 대한 참조를 제거합니다. 상당한 메모리를 사용하는 작업을 하는 경우 디스패치 큐를 일시정지하거나 동시에 작업하는 수를 제한합니다.
❗️앱에서 사용하는 메모리를 줄이지 않으면 앱이 종료될 수 있습니다. 그러므로 저장되지 않은 데이터를 디스크에 저장하는 것을 고려해야 합니다.
⭐️ 메모리 부족 경고를 시뮬레이터에서 테스트해볼 수 있습니다. Debug -> Simulate Memory Warning을 누르면 메모리 부족 경고를 시뮬레이터에서 받아볼 수 있습니다.😎
댓글남기기