2014-12-02 3 views
1

내 앱 안에 있으면 A, B, C가 일부보기 컨트롤러를 나타내는 것처럼 푸시 (A, B, C, B, C, B ...) 할 수 있습니다. 이것이 수용 가능한 디자인 패턴입니까?네비게이션 스택의 무기한보기 컨트롤러를 수용 할 수있는 디자인이 적합합니까?

이것은 어리석은 명백한 질문처럼 보일지도 모르지만 Alibaba Group (중국에서 가장 부유 한 사람이 소유하고 있음)에서 "Taobao"(이 앱은 중국에서 가장 큰 온라인 쇼핑 앱)라고 불리우며 위에서 설명한 것과 같습니다 . 응용 프로그램에서 나는 A -> B -> C -> B -> C -> B .....와 같이 갈 수 있습니다. 그런 다음 AI로 돌아 가야한다면, 내가 더 깊게 돌아갈 때까지 여러 번 돌아갈 필요가 있습니다. 탐색 도중 모든보기 컨트롤러가 스택에 푸시되었음을 의미합니다.

Alibaba Group은 매우 신뢰할 수있는 기술 회사이므로이 탐색 패턴이 이유가 있다고 생각합니다. 내 상식은 그것이 좋은 패턴이 아니라는 것을 말해 주지만 나는 경험이 많은 사람들로부터 소식을 듣고 싶습니다. 감사!

답변

1

일반적으로 앱에 적합한 모든 것을 푸시 할 수 있습니다. 단 하나 (꽤 명백한 조건)가 있습니다 - 스택 맨 위에있는 컨트롤러를 누르지 마십시오.

하지만 큰하지만! 스택이 실제로 무한 할 수 있다면 네비게이션 컨트롤러 스택이 메모리에 저장된다는 것을 명심해야합니다! 더 많은 컨트롤러를 스택에 추가하지 않고 스택에 추가하면 머지 않아 메모리 충돌이 발생할 것입니다. 그래서 단순한 pushViewController 메소드를 사용할 수 없습니다. 합리적인 크기로 스택을 유지하기 위해 다른 헬퍼와 함께 setViewController를 다시 고려할 수 있습니다. 또는 메모리 사용 관측을 기반으로 특정 수로 제한하십시오. 나는 선택의 여지가 많다고 생각하지만 성장하는 기억은 당신이 명심해야하는 요점이다.

+0

방금'setViewControllers'에 대한 문서를 확인했는데 그 방법을 사용하여 새 컨트롤러가 푸시되거나 이전 컨트롤러가 튀어 나왔다는 환상을 만들 수있는 것처럼 보였습니다. 그러나 후드 아래에서 총 뷰 컨트롤러를 제어 할 수있게되었습니다. 네비게이션 스택에. 필자는 필요하다면 스택의 컨트롤러를 조작하면서 무언가의 스택처럼 보이도록 조작 할 수 있다고 생각한다. @ahwulf는'setViewControllerers'를 사용하여 언급했다. 감사. – axl411

1

내가 쓰지 않은 앱은 탐색 스택에 100 개 이상의 컨트롤러가 장착되어 잘 작동하지만 오래된 장치에서는 메모리가 문제가 될 수 있습니다. 개인적으로 나는 컨트롤러를 실제로 조작하지 않고 무한 스택처럼 보이게하기 위해 컨트롤러를 조작하여 이러한 유형의 앱을 만들었을 것입니다. 컨트롤러로 돌아 가면 정확한 모양을 재현 할 수 있으면 문제를 피할 수 있습니다. 그러나 각 메모리 사용량 (우리는 상당히 작음)과 정상적인 장치 지원 여부에 따라 다릅니다. 너 괜찮을거야. 확실히 알기 위해 측정해야합니다.

+0

고마워, 정말 유용한 포인트입니다. – axl411

관련 문제