2011-07-30 6 views
0

현재 앱 스토어에서 첫 번째 앱을 제작 중이므로 here을 읽어야합니다. 앱은 30MB 미만의 RAM (iPhone 3G, iPhone 4)을 사용해야합니다. 나는 어느 시점에서 iOS가 백그라운드 앱에서 사운드, 이미지 및 기타 리소스를 무작위로 삭제하고 해제하여 리소스를 찾기 시작할 것이라고 읽었습니다. 현재, 내 응용 프로그램은 ~ 5MB의 라이브 바이트를 사용하여 악기에 표시되지만 메모리에 대한 편집증을 느낍니다. iPhone3G 및 iPhone4를 타겟팅 할 때 앱에서 10MB 미만을 사용하면 안전합니까?앱이 백그라운드에서 어떤 종류의 "좀비"를 반환 할 수 있습니까?

앱이 백그라운드로 이동하면 iOS가 마침내 그것을 죽일 때까지 얼마나 많은 리소스를 무료로 사용할 수 있습니까? 내 앱이 백그라운드로 이동 한 다음 100 개 이상의 다른 앱이 실행되면 내 앱은 어떻게됩니까? 각 장치의 메모리가 제한되어 있기 때문에 RAM 메모리 조각이 내 앱에 정적이라고 생각하지 않습니다. IMHO, 새로운 앱을 열어서 루핑을 시작하여 배경으로 보내고 다른 앱을 열면 어떤 시점에서 기기 RAM이 완전히 사용됩니다. 그런 다음 이론적으로 새로운 앱을 열려고하면 이론적으로 iOS에 의해 처음 열리는 앱이 죽어야합니다 ...

현재 순수 UIKit으로 작은 게임을 제작 중이므로 많은 UIView를 사용합니다. UIViewImage 개체 및이 이론적 인 상황을 처리하는 방법을 잘 모르겠습니다. 배경을 입력하는 동안, 내 애플 리케이션은 게임 UIViewImages, 메뉴 MVC에 포인터 등을 많이 적재했다. 게임의 모든 평화를 다시로드하기 위해 일부 reloadALL 메소드를 코딩해야합니까? 장치 메모리가 완전히 사용된다면 iOS가 내 앱 전체를 죽이면 모든 것이 괜찮을 것입니다. 그러나 iOS가 게임이나 메뉴 객체에서 UIViewImage의 일부를 릴리스한다면 받아 들일 수 없을 것입니다. 그 경우, 어떤 종류의 "좀비"(내 앱이 "부활"후에 얼마나 많은 다리, 팔 등을 가질 수 있는지)가 내 앱이 될 수 있는지 알지 못합니다. 귀하의 경험과 생각을 공유하십시오 :)

답변

0

iOS는 백그라운드에서 필요할 때 UIKit 데이터 (예 : 이미지보기)와 메모리 내 NSCaches를 삭제합니다. 이 복원에 대해 걱정할 필요가 없습니다.

그러나 자신의 개체와 물건을 관리해야합니다. 메모리 경고와 같은 적절한 이벤트를받을 때 데이터를 도려 내고 복원하는 작업.

+0

감사합니다. 현재, 메모리 경고를 처리하는 방법 중 하나만 알고 있습니다. 주요 응용 프로그램 대리자 클래스의 "applicationDidReceiveMemoryWarning :"메서드입니다.도려내기를 말하면 무슨 뜻이야? 메모리 경고를 처리하는 다른 방법은 무엇입니까? – Centurion

+0

컬링은 "메모리에서 제거"라고 말하는 것입니다. 애플 리케이션 델리게이트, 뷰 컨트롤러 ('didRecieveMemoryWarning')와'applicationDidResignActive'에서 메모리 경고를 처리 할 것입니다. 이 작업을 쉽게 수행 할 수 있도록 디자인 패턴을 찾고 있다면 게으른 인스턴스 생성을 살펴보십시오. –

+0

정보 주셔서 감사합니다 – Centurion

1

일단 앱이 백그라운드로 들어가고 시스템에 더 많은 메모리가 필요하면 배경으로 된 앱을 죽이면 앱에 아무런 메시지도 나타나지 않습니다. 그래서 그것 모두 또는 아무것도.

그럼에도 불구하고 iOS의 메모리 관리는 다음을 지원합니다. 메모리 경고 (앱이 여전히 활성화되어있는 동안, 시스템 자체가 메모리 경고 대처 방법 UIViewController docsdidRecieveMemoryWarning 확인)의 경우 뷰 객체와 게으른 레크리에이션의 해제

이제 앱이 비슷한 동작을 구현을 시도 할 수 있습니다 배경이 들어갈 때 - 또한 일부 메모리 (예 : 캐시 또는 지연 생성 될 수있는 요소)를 비워야하므로 앱의 메모리 사용 공간이 줄어 듭니다. 이렇게하면 앱이 라이브로 돌아 오기 전에 백그라운드에서 더 오래 쓸 수 있습니다. 아이폰 OS 앱을 죽일 시작하면

, 그것은 neccessarily 오래된 응용 프로그램을 죽이고되지 자체 알고리즘을 사용할 수 있습니다 - 그것은 또한 더 큰 효과가 메모리의 측면에서 가장 큰 앱 갈 수도 ..

+0

정보 주셔서 감사합니다 – Centurion

0

Google은 앱에서 사용되는 총 이미지에 대해 정말로 염려하지 않아야합니다. 메모리는 활성 화면의 이미지에만 사용됩니다.

관련 문제