2010-03-01 3 views
3

모델을 나타 내기 위해 하위 클래스 인 NSObject을 사용하여 iPhone 용 퀴즈 애플리케이션을 작성하고 있습니다. 런타임에 다양한 컨트롤러가 모델 클래스를 인스턴스화하고 디스크의 plist에서 읽은 데이터로 채 웁니다. 코코아에서 모델 객체의 계층 구조를 인스턴스화 할 때 메모리 풋 프린트를 줄이는 방법은 무엇입니까?

모델 클래스

은 객관식 퀴즈의 기본 계층 구조를 나타냅니다

  • 한 응용 프로그램은 많은 퀴즈
  • 한 퀴즈가 많은 질문
  • 한 질문이 많은 답변

있다 현재 QuizController 클래스가 Quiz 객체를로드하면 questionsNSArray 속성이 Question 인스턴스가 있고 해당 Question 인스턴스가 초기화 될 때마다 인스턴스 이름은 인 Answer으로 초기화됩니다.

퀴즈를로드 할 때 메모리에있는 모든 질문이 필요하지 않다는 것을 알고 있습니다. Quiz 인스턴스의 questions 배열의 특정 인덱스에만 질문이 필요합니다.

일종의 dataSource 프로토콜 또는 지연로드 패턴이이 시스템에서 특정 퀴즈를로드 할 때 발생하는 메모리 사용량을 줄이는 데 도움이된다고 생각하지만 구현 방법을 잘 모르겠습니다. 커뮤니티가 가진 제안에 대해 정말 감사드립니다.

여기에 어떤 패턴을 사용하면 적절합니까? 짧은 코드 스 니펫 (snippet)은 내가 어떻게 구현할 지 이해하는 데 큰 도움이 될 것입니다.

답변

3

저는 메모리 사용을 최소화하기위한 적절한 설계를하고 있지만 때때로 실용적이어야합니다.

오래된 장치에서는 앱에 20MB 이상의 메모리를 사용할 수 있으므로 게으른 로딩 질문에 많은 시간을 투자하는 것이 합리적인지 잘 모르겠습니다.

수백 개의 질문을 쉽게 알아 채지 않고 메모리에로드 할 수 있습니다.

제 조언 : 비 게으른 길을 시작하십시오. 메모리 사용량에서 인스트루먼트를 살펴보십시오. 그것은 그것을 받아 들일 수있다. 한계를 밀고 있다면 최적화에 시간을 투자하십시오.

+0

사실 나는 이것이 내가해야 할 일이고 실제로 이것을하고 있음에 동의합니다. 필자는 혼자서 일하는 비교적 경험이없는 프로그래머이기 때문에 모범 사례에 대해 궁금합니다. – Prairiedogg

+1

글쎄, 하나의 아주 좋은 연습은 필요에 따라 데이터를로드 할 수있는 핵심 데이터에 모든 데이터를 저장하는 것입니다. 그러나 숫자를 모른 채로 이것은 사실 일 수 없습니다. 예를 들어 핵심 데이터에는 특정 오버 헤드 및 기본 메모리 사용이 있습니다. 당신의 퀴즈 데이터가 완전히 거기에 들어 맞을 수도 있습니다. 퀴즈 데이터에 사용되는 메모리 또는 디스크 공간이 얼마나되는지 알고 있습니까? –

관련 문제