문제

(단지 당신은 내가 interfacae 빌더없이 iPhone을 위해 개발하는 법을 배우고 있다는 것을 알고 있습니다)

루트 ViewController와 2 개의 다른 ViewController가있는 첫 번째 멀티 뷰 앱을 코딩하고 있으며 Root ViewController는 Lazy Loading을 사용하므로 ViewDidload가 첫 번째 ViewController를 생성하고 Subview에 뷰를 추가하지는 않지만. 다른 하나가 필요할 때까지 만듭니다. 그러나 두 번째 것이로드 된 후에는 응용 프로그램이 종료 될 때까지 (메모리 경고를받지 않는 한) 둘 다 거기에 머물러 있습니다.

그래서 궁금합니다. 사용자가 다른 뷰를 두 개로 전환 할 때 제거되는 다른 뷰를 내버려 두어야합니까 (왼쪽 고정 속성으로 설정하여). 따라서 사용자가 버튼을 클릭 할 때마다 현재 ViewController가 언로드되고 (수퍼 뷰에서 제거 된 후) 다음 내용이로드되어 하위 뷰로 추가됩니까?

이것이 옳은 일입니까, 아니면 옳은 일이지만, 응용 프로그램에 많은 견해가 있고 내 것이이 일을 정당화하기에 충분히 복잡하지 않거나 전혀 그렇게하는 것이 좋지 않으며 DideReceiveMemoryWarning을 취해야합니다. 그것을 관리합니다 (didreceiveMemoryWarning에서는 현재 NIL에 표시되지 않는 ViewController를 설정)?

도움이 되었습니까?

해결책

대답은 실제로 달라집니다. 일반적으로 표시되지 않는 뷰를 릴리스하고 설정해야하지만 사용자가 자주 전환하려면 숨겨진 뷰를 유지 (캐시) 유지할 수 있습니다.

당신은 당신의 앱이 사용자의 전화를 didreceiveMemoryWarning으로 푸시하는 것을 실제로 원하지 않습니다. 그 경고를 받으면 전화에서 다른 일이 발생하여 응용 프로그램이 잠시 동안 얼어 붙을 수 있습니다. iPhone은 캐시 된 사파리 페이지, 캐시 된 UIImageview 객체 등을 덤프하는 동안이 프로세스는 최종 사용자와 귀하의 경우 눈에 띄게 될 수 있습니다. 응용 프로그램이 예정인만큼 부드럽지 않을 수 있습니다.

또한 일부 사용자는 첫 번째 Gen iPhone, iPod Touch 및 3GS를 사용하여 3GS에 대한 추가 메모리를 갖지 못할 수 있음을 기억하는 것이 중요합니다.

즉, 나는 기억력으로 보수적 인 측면에 오류가 있으므로보기를 풀어주고 무효화 한 다음 사용자가보고 싶을 때 다시 강화합니다. DidReceiveMemoryWarning으로 인한 시스템의 정리와 비교하여 뷰의 영향은 일반적으로 애플리케이션 사용자에게 훨씬 적습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top