λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🍎 iOS

(38)
[RxSwift] Traits - Single, Completable, Maybe μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ Traitsκ°€ 무엇인지에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³ , RxSwift의 Traits에 λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. (RxCocoa의 TraitsλŠ” λ‹€μŒ κ²Œμ‹œκΈ€μ—μ„œ μ΄μ–΄μ„œ μ •λ¦¬ν•˜λ„λ‘ ν• κ²Œμš”!) 이번 κ²Œμ‹œκΈ€μ€ ReactiveX/RxSwift의 Traits λ¬Έμ„œλ₯Ό λ²ˆμ—­ν•˜λ©΄μ„œ Traits에 λŒ€ν•΄ 정리해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. Traitsλž€? SwiftλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ •ν™•μ„±κ³Ό μ•ˆμ •μ„±μ„ ν–₯μƒμ‹œν‚€κ³  Rx μ‚¬μš©μ„ 보닀 직관적이고 κ°„λ‹¨ν•˜κ²Œ λ§Œλ“œλŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” κ°•λ ₯ν•œ μœ ν˜• μ‹œμŠ€ν…œμ„ κ°–μΆ”κ³  μžˆμŠ΅λ‹ˆλ‹€. TraitsλŠ” μΈν„°νŽ˜μ΄μŠ€ 경계λ₯Ό λ„˜μ–΄ κ΄€μ°° κ°€λŠ₯ν•œ μ‹œν€€μŠ€ 속성을 μ „λ‹¬ν•˜κ³  보μž₯ν•˜λŠ” 데 도움이 될 뿐만 μ•„λ‹ˆλΌ λͺ¨λ“  μ»¨ν…μŠ€νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ›μ‹œ Observableκ³Ό 비ꡐ할 λ•Œ λ¬Έλ§₯적인 의미λ₯Ό μ œκ³΅ν•˜κ³  더 ꡬ..
[Swift] ν”„λ‘œνΌν‹°(Properties) - νƒ€μž… ν”„λ‘œνΌν‹° μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€:) ν”„λ‘œνΌν‹° μ‹œλ¦¬μ¦ˆ λ§ˆμ§€λ§‰!으둜 νƒ€μž… ν”„λ‘œνΌν‹°μ— λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν• κ²Œμš”~! νƒ€μž… ν”„λ‘œνΌν‹° (Type Properties) 이전에 μ •λ¦¬ν–ˆμ—ˆλ˜ μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°λŠ” λͺ¨λ‘ νŠΉμ • μΈμŠ€ν„΄μŠ€μ— μ†ν•œ μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°μž…λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°λŠ” μ–΄λ– ν•œ νƒ€μž…(class, struct λ“±)의 μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ—ˆμ„ λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” ν”„λ‘œνΌν‹°λ‘œ, μΈμŠ€ν„΄μŠ€λ₯Ό μƒˆλ‘œ 생성할 λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œνΌν‹°λ„ 같이 μƒμ„±λ˜κ³ , μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ λ‹€λ₯Έ 값을 지닐 수 μžˆμŠ΅λ‹ˆλ‹€. 각각의 μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹Œ νƒ€μž… μžμ²΄μ— μ†ν•˜λŠ” ν”„λ‘œνΌν‹°λ₯Ό νƒ€μž… ν”„λ‘œνΌν‹°λΌκ³  ν•©λ‹ˆλ‹€. νƒ€μž… ν”„λ‘œνΌν‹°λŠ” νƒ€μž… μžμ²΄μ— 영ν–₯을 λ―ΈμΉ˜λŠ” ν”„λ‘œνΌν‹°λ‘œ, μΈμŠ€ν„΄μŠ€μ˜ 생성 여뢀와 상관없이 νƒ€μž… ν”„λ‘œνΌν‹°μ˜ 값은 ν•˜λ‚˜μž…λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 타..
[Swift] ν”„λ‘œνΌν‹°(Properties) - ν”„λ‘œνΌν‹° μ˜΅μ €λ²„ μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€! μ§€λ‚œ κ²Œμ‹œκΈ€μ— 이어 ν”„λ‘œνΌν‹° 2탄(lazyκΉŒμ§€ ν•©μΉ˜λ©΄ 3탄..)으둜 ν”„λ‘œνΌν‹° μ˜΅μ €λ²„μ— λŒ€ν•΄μ„œ 정리해보렀고 ν•©λ‹ˆλ‹€. ν”„λ‘œνΌν‹° μ˜΅μ €λ²„λŠ” UI μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν•  λ•Œ μœ μš©ν•˜κ²Œ 많이 μ‚¬μš©ν•˜κ²Œ λ˜λŠ” 것 κ°™μ•„μ„œ(λ¬Όλ‘  Rx둜 λΉ„λ™κΈ°μ μœΌλ‘œ μ—…λ°μ΄νŠΈ λ˜λ„λ‘ μ²˜λ¦¬ν•΄μ€„ μˆ˜λ„ μžˆκ² μ§€λ§Œ..) 잘 정리해두면 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€!! ν”„λ‘œνΌν‹° μ˜΅μ €λ²„λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°μ— λŒ€ν•œ 이해가 ν•„μš”ν•˜λ‹ˆ κ°œλ…μ΄ 잘 μ•ˆμž‘ν˜€μžˆλ‹€λ©΄ μ•„λž˜ κ²Œμ‹œκΈ€λ“€μ„ 읽고 μ˜€μ‹œλŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€~! 1) μ €μž₯ ν”„λ‘œνΌν‹°(Stored Properties)와 μ—°μ‚° ν”„λ‘œνΌν‹°(Computed Properties) 2) 지연 μ €μž₯ ν”„λ‘œνΌν‹°(Lazy Stored Properties) ν”„λ‘œνΌν‹° μ˜΅μ €λ²„ (Property Observe..
[Swift] ν”„λ‘œνΌν‹°(Properties) - μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹° μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ :) μ§€λ‚œ κ²Œμ‹œκΈ€μ—μ„œ 지연 μ €μž₯ ν”„λ‘œνΌν‹°μ— λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄μ•˜λŠ”λ°μš”, μ‹œμž‘ν•œ 김에 ν”„λ‘œνΌν‹°μ— λŒ€ν•΄μ„œ μ­‰ 정리λ₯Ό 해보렀고 ν•©λ‹ˆλ‹€. ν”„λ‘œνΌν‹°λŠ” 크게 μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°, νƒ€μž… ν”„λ‘œνΌν‹° μ΄λ ‡κ²Œ μ„Έ κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλŠ”λ°μš”, 이번 κ²Œμ‹œκΈ€μ—μ„œλŠ” μ €μž₯ ν”„λ‘œνΌν‹°μ™€ μ—°μ‚° ν”„λ‘œνΌν‹°μ— λŒ€ν•΄ μ •λ¦¬ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€! ν”„λ‘œνΌν‹° (Properties) μ €μž₯ ν”„λ‘œνΌν‹°, μ—°μ‚° ν”„λ‘œνΌν‹°, νƒ€μž… ν”„λ‘œνΌν‹°μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ €λ©΄ λ¨Όμ € ν”„λ‘œνΌν‹°κ°€ 무엇인지뢀터 μ•Œμ•„μ•Όκ² μ£ ?? propertyλŠ” μž¬μ‚°, 속성 μ •λ„λ‘œ λ²ˆμ—­ν•  수 μžˆλŠ”λ°μš”, Swiftμ—μ„œμ˜ ν”„λ‘œνΌν‹°λŠ” 클래슀, ꡬ쑰체, μ—΄κ±°ν˜• 등에 κ΄€λ ¨λœ 값을 λœ»ν•©λ‹ˆλ‹€. μ €μž₯ ν”„λ‘œνΌν‹° (Stored Properties) μ €μž₯ ν”„λ‘œνΌν‹°λŠ” λ‹¨μˆœνžˆ 값을 μ €μž₯ν•˜κ³  μžˆλŠ” ν”„λ‘œνΌν‹° μž…λ‹ˆλ‹€..
[Swift] lazy ν‚€μ›Œλ“œ μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ :) μš”μ¦˜μ€ μƒˆλ‘œμš΄ 것듀을 κ³΅λΆ€ν•˜κΈ° 보닀 λΆ€μ‘±ν•œ 것듀을 κΌΌκΌΌν•˜κ²Œ μ±„μ›Œλ³΄μžλŠ” μƒκ°μœΌλ‘œ κ·Έλ™μ•ˆ μ •ν™•νžˆ λͺ¨λ₯΄κ³  λ„˜μ–΄κ°”λ˜ κ΅¬λ©λ‚œ 뢀뢄듀을 μ±„μ›Œλ³΄λ €κ³  λ…Έλ ₯ν•˜κ³  μžˆλŠ”λ°μš”! κ·ΈλŸ¬λ‹€λ³΄λ‹ˆ Swift, iOS κΈ°λ³ΈκΈ°λ₯Ό 더 νƒ„νƒ„νžˆ, μžμ„Έν•˜κ²Œ κ³΅λΆ€ν•΄μ•Όκ² λ‹€λŠ” 생각이 λ“€λ”λΌκ΅¬μš”..(사싀 기본지식이 제일 μ€‘μš”ν•˜λ‹ˆκΉŒμš”) κ·Έλž˜μ„œ 생각날 λ•Œλ§ˆλ‹€ μ •λ¦¬ν•˜λŠ” 것듀을 ν‹°μŠ€ν† λ¦¬μ—λ„ 기둝해보렀고 ν•©λ‹ˆλ‹€. μ˜€λŠ˜μ€ lazy ν‚€μ›Œλ“œ, 지연 μ €μž₯ ν”„λ‘œνΌν‹°μ— λŒ€ν•΄μ„œ 정리해보렀고 ν•˜λŠ”λ°μš”, lazy ν‚€μ›Œλ“œλ₯Ό μ™œ μ‚¬μš©ν•˜λŠ”μ§€μ— μ΄ˆμ μ„ λ§žμΆ°μ„œ 정리해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€! Lazy Stored Properties (지연 μ €μž₯ ν”„λ‘œνΌν‹°) The Swift Language Guide에 λ”°λ₯΄λ©΄, 지연 μ €μž₯ ν”„λ‘œνΌν‹°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 지연 μ €μž₯ ν”„λ‘œνΌ..
[RxSwift] Relayλž€? μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ :) μ €λ²ˆ Rx κ²Œμ‹œκΈ€μ΄μ—ˆλ˜ Subject에 이어 Relay에 λŒ€ν•΄μ„œλ„ ν•œ 번 정리해보렀고 ν•©λ‹ˆλ‹€. μ΄λ²ˆμ—λ„ RxSwift: Reactive Programming with Swift 책을 μ°Έκ³ ν•΄μ„œ 정리λ₯Ό 해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€! Subject에 λŒ€ν•΄ 잘 λͺ¨λ₯΄μ‹œκ² λ‹€λ©΄ μ•„λž˜μ˜ κ²Œμ‹œκΈ€μ„ λ¨Όμ € 읽고 μ˜€μ‹œλŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€. [RxSwift] Subjectλž€? μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ : ) μ°Έ μ˜€λžœλ§Œμ— RxSwift κ²Œμ‹œκΈ€ μ“°κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.. λ¬Έ 닫은거 μ•„λ‹ˆκ΅¬μš” μ •μƒμ˜μ—…ν•˜λ €κ΅¬μš”.. λ„€.. 사싀 κ·Έλ™μ•ˆ RxSwift 곡뢀λ₯Ό μ•„μ˜ˆ μ•ˆν•œ 것은 μ•„λ‹Œλ°μš”.. λ­”κ°€ κ²Œμ‹œκΈ€μ„ μ“Έ λ•Œ janechoi.tistory.com Relayλž€? RelayλŠ” Subject의 Wrapper 클래슀둜, RxCocoa 내뢀에..
[RxSwift] Subjectλž€? μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ : ) μ°Έ μ˜€λžœλ§Œμ— RxSwift κ²Œμ‹œκΈ€ μ“°κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.. λ¬Έ 닫은거 μ•„λ‹ˆκ΅¬μš” μ •μƒμ˜μ—…ν•˜λ €κ΅¬μš”.. λ„€.. 사싀 κ·Έλ™μ•ˆ RxSwift 곡뢀λ₯Ό μ•„μ˜ˆ μ•ˆν•œ 것은 μ•„λ‹Œλ°μš”.. λ­”κ°€ κ²Œμ‹œκΈ€μ„ μ“Έ λ•Œ ν™•μ‹€ν•œ 정보λ₯Ό μ „λ‹¬ν•΄μ•Όν•œλ‹€λŠ” 생각에 μ’€ 더 κ³΅λΆ€ν•˜κ³  μ •λ¦¬ν•΄μ„œ 올리자 μ’€ 더 ν•˜κ³ ... ν•˜λ‹€κ°€ μ΄λ ‡κ²Œ 미루게 된 것 κ°™λ„€μš” ν•˜ν•« 이제 더 이상 λ―Έλ£° 수 μ—†λ‹€! 많이 뢀쑱해도 κΈ€λ‘œ μ •λ¦¬ν•˜λ©΄μ„œ ν™•μ‹€νžˆ μ΄ν•΄ν•˜λŠ” 뢀뢄듀이 λ§Žμ€ 것 같기도 ν•˜κ³ , μ΅œκ·Όμ— ν”„λ‘œμ νŠΈμ—μ„œ RxSwiftλ₯Ό μ΄μš©ν•΄ 비동기 처리λ₯Ό ν•  일이 λ§Žμ€λ° μ •ν™•νžˆ μ•Œμ§€ λͺ»ν•˜λŠ” 뢀뢄이 λ§Žλ‹€κ³  λŠκΌˆμŠ΅λ‹ˆλ‹€.. κ·Έλž˜μ„œ μ œλŒ€λ‘œ μ•Œκ³  μ½”λ“œλ₯Ό 짜고 μ‹Άμ–΄μ„œ λ‹€μ‹œ RxSwift 곡뢀λ₯Ό μ—΄μ‹¬νžˆν•˜λ©° ν‹°μŠ€ν† λ¦¬μ—λ„ 정리λ₯Ό 해보렀고 ν•©λ‹ˆλ‹€! λ§ˆμ§€λ§‰μœΌλ‘œ Observabl..
[Swift] enumerated() μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ enumerated()에 λŒ€ν•΄ 정리해보렀고 ν•˜λŠ”λ°μš”, μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ‹€ λ‹€λ₯Έ 풀이λ₯Ό 참고해보면 enumerated()λ₯Ό μ‚¬μš©ν•΄ 더 κΉ”λ”ν•˜κ²Œ μ²˜λ¦¬ν•œ 풀이가 λ§Žμ•„μ„œ enumerated() ν•¨μˆ˜κ°€ 무엇인지, 그리고 μ–΄λ–»κ²Œ ν™œμš©ν•˜λŠ”μ§€κΉŒμ§€ ν•œλ²ˆ 정리해보렀고 ν•©λ‹ˆλ‹€! μ œλŒ€λ‘œ 정리해두고 잘 μ¨λ¨Ήμ–΄λ΄…μ‹œλ‹€! enumerated() enumerateλŠ” μ‚¬μ „μ μœΌλ‘œ μ—΄κ±°ν•˜λ‹€, μ„Έλ‹€ λΌλŠ” 의미λ₯Ό κ°€μ§€λŠ”λ°μš”, Swiftμ—μ„œλŠ” μ–΄λ–€ 의미둜 μ‚¬μš©λ˜λŠ”μ§€ λ¨Όμ € 곡식 λ¬Έμ„œλ₯Ό 톡해 enumerated()의 μ •μ˜λΆ€ν„° μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€! (n, x)둜 이루어진 쌍의 μ‹œν€€μŠ€λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ n은 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 연속적인 μ •μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄κ³  xλŠ” μ‹œν€€μŠ€μ˜ μš”μ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ •λ„λ‘œ 해석할 수 μžˆμ„ 것 κ°™μ€λ°μš”, μš”..