일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- clean architecture
- ribs
- uitableview
- 리팩토링
- Human interface guide
- swiftUI
- RxCocoa
- 리펙터링
- 애니메이션
- rxswift
- Clean Code
- tableView
- UITextView
- MVVM
- 스위프트
- map
- ios
- Xcode
- UICollectionView
- collectionview
- combine
- HIG
- 클린 코드
- 리펙토링
- swift documentation
- Observable
- uiscrollview
- SWIFT
- Protocol
- Refactoring
- Today
- Total
목록Architecture (swift)/RIBs (13)
김종권의 iOS 앱 개발 알아가기
튜토리얼 RIB 트리 현재 LoggedOut RIB 구현 완료 새로 만들어질 LoggedIn RIB은 View가 없는 RIB 플로우: LoggedIn에서 로그인이 성공 > OffGame에서 start button 탭 -> TicTacToe RIB의 뷰 표출 Child -> parent 데이터 넘기기 (Listener Interface) 내용: LoggedOutViewController에서 플레이어 1, 2이름을 입력 후 로그인 -> LoggedInRIB을 통해 TicTacToe 게임 ViewController 화면이 유저에게 표출 LoggedOut RIB이 Root RIB에게 로그인 완료 상태 알림 LoggedOutViewController에서 유저가 Login 탭 -> LoggedOutInteracto..
Delegate 기초 개념 데이터를 주는 쪽에서 클래스 내부에 protocol을 선언, 데이터를 받는 쪽에서 protocol 구현 ex) LoggedOutInteractor의 LoggedOutRouting과 같이, 클래스 내부에 프로토콜을 선언하는 경우 RIBs에서 버튼을 탭할때 데이터를 보내는 기능을 구현할 경우 VC -> Interactor로 데이터 보내기: ViewController의 PresentableListener에 tap() 함수 선언 Interactor에서 PresentableListener 프로토콜 구현 VC에서 버튼 이벤트가 발생하는 경우 프로퍼티로 선언된 PresentableListener객체의 함수 실행 parent와 child간 데이터 교환 child -> parent: Inter..
템플릿 세팅 git clone: github.com/uber/RIBs 템플릿 설치 $ cd RIBs/ios/tooling $ /install-xcode-template.sh Xcode의 템플릿 확인 튜토리얼의 RIB 트리 LoggedOut RIB 추가 * storyboard를 사용할 경우, 아래 "RIBs에서 storyboard 사용 방법" 참고 LoggedOutBuilder LoggedOutBuildable protocol을 사용하여 mock을 만들 수 있는 구성 LoggedOutInteractor LoggedOutRouting protocol로 Router와 통신 LoggedOutListener protocol은 Router와 연결되어 있으며 Router에서 부모 RIB에 데이터 전달 LoggedOu..
RIBs 아이디어 view가 아닌 business logic 중심 구조 state변화는 view가 아닌 business logic에서 관리 하나의 화면이 여러 ViewController로 이루어질 수 있다는 점이 존재 State관리는 scope를 이용하여 관리 (isolation) 모듈화에 의해 co-working에 유리: dependency가 제대로 inject되어 있다면 각 RIB을 합치기 쉬운 장점 RIB - 6개의 컴포넌트로 이루어진 하나의 기능 단위 (Required) Router: RIB이 어떻게 attach, detach될 것인지 (animation) Interactor: 비즈니스 로직 관리, 어떤 RIB들을 attach, detach 할지 명령 Builder: RIB 생성 (Mock에 유리..
uber가 RIBs를 만든 이유 - 모듈화 MVC를 사용할 때 새로운 기능이 늘어나며 앱의 복잡성 증가 모듈이 증가할수록, 테스트 하기 점점 어려워지는 현상 4년동안 MVC패턴 사용 -> 관리하기가 힘든 scale (하나의 ViewController파일에 300줄 -> 3000줄) massive view controllers (비즈니스 로직, 데이터 변경, 데이터 검증, 네트워크 로직, 라우팅 로직) 테스트가 어려운 구조 (if-else문으로 테스트) VIPER 아키텍처 View Interactor: 비즈니스 로직포함, API나 DB로 Data르 받아서 Entity(모델) 생성 Presenter: View에서 유저 앣견을 받고, Interactor에 data를 요창하여 VIew에 그려주는것을 다시요청 E..