A colossal Dreamer: GR鐵塔-天生我材

[아이폰:정리] 나의 아이폰 화면 구성 과정. 본문

Development/아이폰

[아이폰:정리] 나의 아이폰 화면 구성 과정.

江多林 2011. 9. 21. 01:37
강좌는 아니기에 개략적인 개념만 정리하고 넘어갑니다.
뭔가 구현하는 예제는 과감하게 내일로 미뤄 봅니다.

아이폰에서의 입력화면의 구조와 구성

XxxxViewController : View Event 또는 외부 오픈 Interfacing
XxxxModel : 입력화면이 가져야 할 최소한의 데이터저장소
XxxxViewController.nib : 입력화면 UI
XxxxHelper : 이벤트의 정합성 판단/ ModelData의 변환/ 등의 로직을 담당

XxxxTest : Helper Unit Test
XxxxAutomation : UX Test 


작업순서:
1. Nib 를 최소한으로 구성하여 얼 확인
2. ViewController 를 최소한으로 구성해서 UI 흐름 시연
3. 경우에 따라서 Nib파일에 샘플이미지를 올려 놓는다.
--- prototype 완성 ---

4. Model 구성/ 화면에 적당한 ViewController의 자료구조를 설계
5. Model 구현 및 ViewController 에서 public property 와 Model의 연결
--- 기반구조 완성 ---

6. applyXXXXModelData 메소드/ 일반적으로 applyModelData(모델의 모든 데이터 퍼붓기)
7. [UX흐름]에 맞게 ViewController 추가 구현
--- 구현 완료 ---

8. Helper 구현/ ViewController의 검증, 변환, 모델데이터 추출, API호출(페이징필요시) 등의 코드를 Helper로 이동
   <-- 단위테스트를 위해 필수 작업
--- 리팩토링 및 단위테스트 준비 ---

9. Unit Test 구현
10. Automation 구현
--- 밥값 완료 ---


중요포인트:
4. Model 구성시 주의사항
  외부인터페이싱으로 View에 설정해야할 것은 반드시 View객체 외에 모델에도 클론이 있어야 한다.
  모델자료구조가 단순한 경우 모델을 자료구조형태로 ViewController가 가질 수 있다.
  단, 조회조건/ 조회결과 등 성격이 다른 자료 함께 갖는 경우에는 분리하는 것이 좋다.
  모델을 API 호출을 담당하는 경우 모델 변경 인폼전달은 NotificationCenter를 활용한다.
  (API객체를 Controller 가 가질 것이냐 Model이 가질 것이냐는 아직 고민중.!)

6. applyXXXXModelData메소드
  적용할 데이터 성격에 따라 applyAbcModelData, applyBbcModelData 등의 개별 적용 메소드를 만들고,
  applyAllModelData 에서 전체를 적용하도록 구성하면, 필요한 부분만 업데이트 할 수 있음.
  (그러기 위해서는 또한 모델이 잘 구성되어 있어야 구현에 막힘이 없을 것이다.)
  view를 다시 그리는 update와 view가 dataSource로부터 데이터를 읽어오는 reload와 충돌되지 않도록,
  applyXXXXModelData 가 적당해 보임.

8. Helper 구현
  ViewController 클래스의 코드의 일부를 Helper 로 이동(delegation)하는 과정이다.
  자료의 획득/ 서브화면의 획득/ Model과 View 간의 자료변환/ Action 처리 가능여부 확인 코드
  UI 단위테스트를 위해서는 필수적인 부분이다.