λ·° μμ΄ λΉμ¦λμ€ λ‘μ§λ§ νμν κ²½μ°κ° μ μκ³ κ³΅μμ μΈ νλ‘μ νΈμμ μ΄λ¬ν μν€ν μ²λ₯Ό λμ νμ§λ μκΈ° λλ¬Έμ RIBs μ 곡λΆν΄μΌ κ² λ€κ³ λ§μλ¨ΉκΈ° κΉμ§ κ΅μ₯ν μ€λ κ±Έλ Έλ€.
λμ ν μ€νΈμ UI ν μ€νΈλ₯Ό μ§ννλ κ²μ΄ μ λΆμλλ° μ΄λ²μ κ·λͺ¨κ° μ’ μλ νλ‘μ νΈλ₯Ό ν΄λ³΄λ©΄μ ν μ€νΈμ μ€μμ±μ κΉ¨λ«κΈ° μμνκ³ , κΈ°νμ΄ λ°λ λ λ§λ€ λΉμ¦λμ€ λ‘μ§μ΄ μλ UIκ° μμ λμ΄μΌ νλ μν©μ 보면μ μ μν€ν μ²λ₯Ό λμ νμ¬ μ¬μ©νλμ§ λλΌκ² λμλ€. UIκ° λΉμ¦λμ€μ κΈ΄λ°ν μλ‘ μμ νλλ° λ§μ μκ°μ΄ κ±Έλ Έλ€.
κ²°κ΅ MVVC, MVVM λ±μ κΈ°μ 거리λ€κ° RIBsλΌλ μν€ν μ²λ₯Ό μκ² λμλ€. μ°λ²μμ μ μν μν€ν μ²μ΄λ©° λ·°λ₯Ό νμλ‘ νμ§ μλ λΉμ¦λμ€ λ‘μ§μ μν RIB μ λ§λ€ μ μλ€λ κ²κ³Ό ν μ€νΈμ μ©μ΄μ±μ΄λΌλ λ§μ λ°ν΄ 곡λΆλ₯Ό μμν΄ λ³΄κ³ μ νλ€!
곡λΆν΄ λ³΄κ³ λ¨μ ν μ€νΈμ ν¨κ³Όμ μ΄κ³ λ·°μ μ’ μμ μ΄μ§ μμ μ΅κ³ μ λ°©λ²μ΄λΌλ©΄ νμΌμ΄ λμ΄λλ λ¨μ λ³΄λ€ μ₯μ μ ννκ² λ€λ κ²μ΄ λμ μ·¨μ§μ΄λ€! 곡λΆν΄μ λ€λ₯Έ μ¬λλ€μκ² μ§μμ λλ μ μμμΌλ©΄ νλ λ°λλ μλ€.
- λ©μΈ ν΅μ¬μ μ±μ΄ λ·°μ μν΄μκ° μλ λΉμ¦λμ€ λ‘μ§μ μν΄μ μ€ννκ³ λμν΄μΌ νλ€λ κ²μ΄λ€.
- RIBμ νΈλ¦¬ κ΅¬μ‘°λ‘ νμν ν μ μλλ° RIBμ λ Έλμ΄κ³ λ Έλλ νμ λ Έλλ₯Ό νκ° μ΄μ κ°μ§ μ μμΌλ©° κ°μ§μ§ μμ μλ μλ€.
- μ± λΌμ΄ν μ¬μ΄ν΄ λμ RIBμ attach νκ±°λ deattach ν μ μκ³ μΉ λ λ Έλλ₯Ό μμ±νκ±°λ κ° λ Έλ μ¬μ΄μ μΈν°λ μ μ ν μ μλ€.
Router
μΈμ ν RIBs μ¬μ΄λ₯Ό navigation ν μ μλ€.
Interactor
RIBμ λ©μΈ μ»΄ν¬λνΈμ΄λ©° λΉμ¦λμ€ λ‘μ§μ νΈλ€λ§ ν¨. μ¬μ©μμ μΈν°λ μ νλ©°, λ°±μλμμ μν΅μ λ΄λΉνλ€. μ¬μ©μμκ² λ³΄μ¬μ ΈμΌ ν λ°μ΄ν°λ₯Ό μ€λΉνλ€. μΈν°λ ν°κ° λ·°λ₯Ό μμ νκ² λλ©° λ·°λ λΈλ¦¬κ²μ΄νΈ ν¨ν΄μ ν΅νμ¬ Interactorμ μνΈ μμ©ν¨
Builder
λͺ¨λ RIBλ€μ νλλ‘ λ§λ€μ΄ μ£Όλ ꡬ쑰체μ΄λ€.
View
λ·°λ μ΄λ ν λΉμ¦λμ€ λ‘μ§λ κ°μ§μ§ μλλ€. μ¬μ©μμ ν°μΉμ κ°μ μνΈμμ©μ λ°μ interactorλ‘ μ λ¬νλ μνμ νλ€. λ·°λ UIλ₯Ό λ λλ§ νλ€.
Presenter
λ·°κ° κ΅¬ννλ κΈ°λ³Έμ μΈ νλ‘ν μ½.
example ) μ¬μ©μκ° Viewμ μλ λ²νΌμ λλ¦ -> interactorμ μλ web-taskκ° νΈλ¦¬κ±° λ¨ -> interactorκ° presentorμκ² μ‘ν°λΉν° μΈλμΌμ΄ν°λ₯Ό λμ°λλ‘ ν¨ -> λ€νΈμνΉ μ±κ³΅ -> interactor κ° routerμκ² λ€μ νλ©΄μΌλ‘ μ΄λνλλ‘ ν¨
viewμ presenterλ μ΅μ λλ‘ λμ΄ μλ€. μ¦ λΉμ¦λμ€ λ‘μ§λ§μ μν RIBμ μμ±νλ κ²μ΄ κ°λ₯νλ€.
νλ‘μ νΈμ μΈν ν΄ μ£ΌκΈ° μ μ ν νλ¦Ώμ΄ νμ νλ€. new file ν΄μ€ λ RIBs ν νλ¦Ώμ μμ±ν΄ μ£ΌκΈ° μν΄μ xCodeμ ν νλ¦Ώμ μΈν ν΄ μ£Όμ΄μΌ νλ€
μ°μ μλ uber μ RIBs κΉνλΈλ‘ λ€μ΄κ°λ€.
μ¬κΈ°μ Download ZIPμ λλ¬ μ£Όκ±°λ Open with GitHub Desktopμ λλ¬ μ€λ€
νμΌμ λ€μ΄λ‘λ λ°μ νμΌλ‘ λ€μ΄κ° 보면 RIBs-master λΌλ ν΄λκ° μλ€.
ν¬λ‘μ€ νλ«νΌμ μ§μνκΈ° λλ¬Έμ androidμ ios κ° masterλΌλ μ΄λ¦μ ν΄λμ κ°μ΄ λ€μ΄κ° μλ€. ios ν΄λ λλΈν΄λ¦
tooling μ΄λΌλ ν΄λλ₯Ό λλΈ ν΄λ¦νλ©΄
ν νλ¦Ώ μ€μΉλ₯Ό μν install-xcode-template.sh κ° μ‘΄μ¬νλ€. μ΄μ ν°λ―Έλ μ°½μ μΌμ cd λ‘ ν΄λΉ tooling ν΄λλ‘ μ΄λ ν λ€
sh λ₯Ό μ€ν μμΌ ν νλ¦Ώμ xCodeμμ μ¬μ©ν μ μλλ‘ ν΄μ€λ€.
./install-xcode-template.sh
νλ‘μ νΈ μμ± ν
pod 'RIBs', '~> 0.9'
pod 'RIBs', :git => 'https://github.com/uber/RIBs.git', :branch => 'master'
νλ‘μ νΈλ₯Ό μ€ννλ€.
new fileμ νλ©΄
RIBμ μμ±ν μ μλ€.
μ°Έκ³ λ§ν¬:
https://medium.com/swlh/ios-architecture-exploring-ribs-3db765284fd8
'π iOS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[RxSwift] Observable, Operators κ·Έλ¦¬κ³ subscribe (0) | 2022.01.05 |
---|---|
[iOS/Swift] Custom Font μ¬μ©νκΈ° (0) | 2021.12.19 |
[Swift] push notification μ 리 (with Firebase) permissionκ³Ό νΈμ λ°μ λ νΈμΆλλ ν¨μ (0) | 2021.10.27 |
[SwiftUI 3.0] URLSession κ³Ό List, @Published, @ObservedObject μ¬μ©νκΈ° (0) | 2021.10.27 |
[iOS/swift] UINavigaitonBar tint color iOS 15 + (0) | 2021.10.21 |
λκΈ