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

🍎 iOS

(38)
[Architecture] MVC, MVP, MVVM μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ μ•ˆλ…•ν•˜μ„Έμš”πŸ˜Š μ˜€λŠ˜μ€ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ λͺ‡κ°€μ§€μ— λŒ€ν•΄ μ •λ¦¬ν•΄λ³ΌκΉŒ ν•©λ‹ˆλ‹€! μ•„ν‚€ν…μ²˜μ— λŒ€ν•΄ 곡뢀해야겠닀고 μƒκ°ν•œ μ΄μœ λŠ” MVC νŒ¨ν„΄μœΌλ‘œ κ°œλ°œν•˜λ©° VCκ°€ λͺ¨λ“  역할을 λ‹΄λ‹Ήν•˜λ‹€λ³΄λ‹ˆ 점점 λ¬΄κ±°μ›Œμ§€λŠ” 것을 느꼈고.. μ΄λŸ¬ν•œ MVC νŒ¨ν„΄μ˜ 단점에 λŒ€ν•œ λŒ€μ•ˆμœΌλ‘œ MVVM νŒ¨ν„΄μ΄ μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 이번 ν¬μŠ€νŒ…μ—μ„œ MVC, MVP, MVVM μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ— λŒ€ν•΄ 차이점을 μœ„μ£Όλ‘œ 정리해보렀고 ν•©λ‹ˆλ‹€! μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λž€? λ¨Όμ €, μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λž€ λ¬΄μ—‡μΌκΉŒμš”? μœ„ν‚€ν”Όλ””μ•„μ— λ”°λ₯΄λ©΄, μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λž€, 주어진 μƒν™©μ—μ„œμ˜ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ³μ˜ 곡톡적인 λ°œμƒ λ¬Έμ œμ— λŒ€ν•œ 일반적인, μž¬μ‚¬μš© κ°€λŠ₯ν•œ 해결책을 μ˜λ―Έν•œλ‹€. μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ 더 큰 범주에 μ†ν•œλ‹€. κ°„λ‹¨νžˆ λ§ν•˜λ©΄, μ•„ν‚€ν…μ²˜ 패..
[Swift] if letκ³Ό guard let의 차이 μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€!😊 μ˜€λŠ˜μ€ if letκ³Ό guard let의 차이점에 λŒ€ν•΄ ν•œλ²ˆ 정리해보렀고 ν•©λ‹ˆλ‹€. Optional νƒ€μž…μ˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ˜΅μ…”λ„ 바인딩을 톡해 μ•ˆμ „ν•˜κ²Œ κΊΌλ‚΄μ„œ μ“°λŠ”κ²Œ 정말 μ€‘μš”ν•œλ°μš”! ν‰μ†Œμ— 정말 λ¬΄μ˜μ‹μ μœΌλ‘œ if letκ³Ό guard let을 μ‚¬μš©ν•˜κ³  μžˆμ—ˆλŠ”λ°, 참여쀑인 ν”„λ‘œμ νŠΈμ—μ„œ νŒ€μ›μ΄ 이에 λŒ€ν•œ μ§ˆλ¬Έμ„ λ‚¨κ²¨μ£Όμ–΄μ„œ λ‘κ°œμ˜ 차이점에 λŒ€ν•΄ ν™•μ‹€νžˆ μ •λ¦¬ν•˜κ³  κ°€λ €κ³  ν•©λ‹ˆλ‹€πŸ‘©πŸ»‍πŸ’» 곡톡점 λ¨Όμ €, λ‘κ°œμ˜ 곡톡점에 λŒ€ν•΄ 짚고 λ„˜μ–΄κ°ˆκ²Œμš”! if letκ³Ό guard let은 κ³΅ν†΅μ μœΌλ‘œ μ˜΅μ…”λ„ λ°”μΈλ”©μ΄λΌλŠ” νŠΉμ§•μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„(Optional)은 값이 μžˆμ„ μˆ˜λ„, 없을 μˆ˜λ„ μžˆμŒμ„ λ‚˜νƒ€λ‚΄λŠ” ν‘œν˜„μž…λ‹ˆλ‹€. μ΄λŠ” λ³€μˆ˜λ‚˜ μƒμˆ˜ 등에 값이 μžˆλ‹€λŠ” 것을 보μž₯ν•  수 μ—†μŒ, λ‹€μ‹œ 말해 λ³€μˆ˜ 또..
[Swift] Escaping Closure(νƒˆμΆœ ν΄λ‘œμ €) μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œ ν΄λ‘œμ €(Closure)의 기본적인 κ°œλ…μ— λŒ€ν•΄ μ •λ¦¬ν–ˆμ—ˆλŠ”λ°μš”, 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” Escaping Closure에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€!😊 ν΄λ‘œμ €μ— λŒ€ν•΄ 잘 λͺ¨λ₯΄μ‹œκ² λ‹€λ©΄ μ§€λ‚œ ν¬μŠ€νŒ…μ„ 보고 μ˜€μ‹œλŠ” 것을 μΆ”μ²œλ“œλ¦½λ‹ˆλ‹€! [Swift] ν΄λ‘œμ €(Closure) μ΅œκ·Όμ— iOS μŠ€ν„°λ”” μΉœκ΅¬λ“€κ³Ό ν•¨κ»˜ ν΄λ‘œμ €μ— λŒ€ν•΄ κ³΅λΆ€ν•΄λ³΄μ•˜λŠ”λ°μš”, λΈ”λ‘œκ·Έμ—λ„ κ·Έ λ‚΄μš©μ„ ν•œλ²ˆ 정리해보렀고 ν•©λ‹ˆλ‹€!😊 데이터 전달, μ„œλ²„ 톡신 λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ΄μš©κ°€λŠ₯ν•œ 클둜 janechoi.tistory.com Escaping Closureλž€? escaping closureλŠ” 해석 κ·ΈλŒ€λ‘œ νƒˆμΆœ ν΄λ‘œμ €λΌκ³ λ„ λΆˆλ¦¬λŠ”λ°μš”, 말 κ·ΈλŒ€λ‘œ 'νƒˆμΆœ κ°€λŠ₯ν•œ' ν΄λ‘œμ €λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€. νƒˆμΆœ..? μ–΄λ””λ₯Ό νƒˆμΆœν•΄...? λΌλŠ” 의문이 λ“œμ‹€..
[Swift] ν΄λ‘œμ €(Closure) μ΅œκ·Όμ— iOS μŠ€ν„°λ”” μΉœκ΅¬λ“€κ³Ό ν•¨κ»˜ ν΄λ‘œμ €μ— λŒ€ν•΄ κ³΅λΆ€ν•΄λ³΄μ•˜λŠ”λ°μš”, λΈ”λ‘œκ·Έμ—λ„ κ·Έ λ‚΄μš©μ„ ν•œλ²ˆ 정리해보렀고 ν•©λ‹ˆλ‹€!😊 데이터 전달, μ„œλ²„ 톡신 λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•˜κ²Œ μ΄μš©κ°€λŠ₯ν•œ ν΄λ‘œμ €μ— λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€!! ν΄λ‘œμ €(Closure)λž€? ν΄λ‘œμ €λŠ” 일정기λŠ₯을 ν•˜λŠ” μ½”λ“œλ₯Ό ν•˜λ‚˜μ˜ λΈ”λ‘μœΌλ‘œ λͺ¨μ•„놓은 것을 λ§ν•©λ‹ˆλ‹€. μ‹€ν–‰κ°€λŠ₯ν•œ μ½”λ“œλΈ”λŸ­μ΄λΌκ³ λ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜λ„ ν΄λ‘œμ €μ˜ ν•œ ν˜•νƒœμž…λ‹ˆλ‹€. (ν•¨μˆ˜λŠ” 이름이 μžˆλŠ” ν΄λ‘œμ €) ν΄λ‘œμ €λΌλŠ” κ°œλ… μ•ˆμ— ν•¨μˆ˜κ°€ ν¬ν•¨λ˜λŠ” 것이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. → ν•¨μˆ˜: Named Closure, μ΄μ™Έμ˜ 일반적인 ν΄λ‘œμ €: (Unnamed) Closure ν΄λ‘œμ €λŠ” μΌκΈ‰κ°μ²΄μ˜ νŠΉμ„±μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ³€μˆ˜λ‚˜ μƒμˆ˜μ— λŒ€μž…ν•˜κ³ , λ°˜ν™˜(return) κ°€λŠ₯ν•˜λ©° νŒŒλΌλ―Έν„°λ‘œ 받을 수 있..
[Design Pattern] 싱글톀 νŒ¨ν„΄(Singleton Pattern) 졜근 ν”„λ‘œμ νŠΈμ—μ„œ 싱글톀 νŒ¨ν„΄μ„ μ‚¬μš©ν•΄λ³΄κ²Œ λ˜μ—ˆλŠ”λ°μš”! 싱글톀 νŒ¨ν„΄μ„ μ œλŒ€λ‘œ μ•Œκ³  μ“°κ³ μž 싱글톀 νŒ¨ν„΄μ— λŒ€ν•΄ 정리해보렀고 ν•©λ‹ˆλ‹€. Singleton의 μ •μ˜, μ‚¬μš©μ΄μœ , μ‚¬μš©λ°©λ²• 순으둜 μ •λ¦¬ν•΄λ‚˜κ°€λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€! 싱글톀 νŒ¨ν„΄(Singleton Pattern)μ΄λž€? μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μ—μ„œ μ‹±κΈ€ν„΄ νŒ¨ν„΄(Singleton pattern)을 λ”°λ₯΄λŠ” ν΄λž˜μŠ€λŠ”, μƒμ„±μžκ°€ μ—¬λŸ¬ μ°¨λ‘€ ν˜ΈμΆœλ˜λ”λΌλ„ μ‹€μ œλ‘œ μƒμ„±λ˜λŠ” κ°μ²΄λŠ” ν•˜λ‚˜μ΄κ³  졜초 생성 이후에 호좜된 μƒμ„±μžλŠ” 졜초의 μƒμ„±μžκ°€ μƒμ„±ν•œ 객체λ₯Ό λ¦¬ν„΄ν•œλ‹€. 이와 같은 λ””μžμΈ μœ ν˜•μ„ μ‹±κΈ€ν„΄ νŒ¨ν„΄μ΄λΌκ³  ν•œλ‹€. [좜처] μœ„ν‚€λ°±κ³Ό 싱글톀은 λ””μžμΈ νŒ¨ν„΄ 쀑 생성 νŒ¨ν„΄μ— ν•΄λ‹Ήν•˜λŠ” λ””μžμΈ μœ ν˜•μœΌλ‘œ, ν΄λž˜μŠ€κ°€ μ—¬λŸ¬ μ°¨λ‘€ ν˜ΈμΆœλ˜λ”λΌλ„ λ”± ν•œ 객체만 μƒμ„±λ˜κΈ° λ•Œλ¬Έμ— 객체λ₯Ό ν•˜λ‚˜λ§Œ μƒμ„±ν•˜..
[iOS] UserDefaultsλž€? μ•ˆλ…•ν•˜μ„Έμš”! ν‹°μŠ€ν† λ¦¬ 첫 κΈ€λ‘œ UserDefaults에 λŒ€ν•΄ μ“°κ²Œ λ˜μ—ˆλ„€μš”,, ν‹°μŠ€ν† λ¦¬λ₯Ό κΎΈμ€€νžˆ μ¨λ³΄μžλŠ” μƒˆν•΄ 닀짐을 ν•˜λ©°..UserDefaults에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.. UserDefaultsλž€?πŸ€” λ¨Όμ €, μ• ν”Œ 곡식 λ¬Έμ„œμ—λŠ” UserDefaultsκ°€ μ–΄λ–»κ²Œ μ •μ˜ λ˜μ–΄μžˆμ„κΉŒμš”?? μ•± μ‹€ν–‰ μ „λ°˜μ— 걸쳐 key-value μŒμ„ μ§€μ†μ μœΌλ‘œ μ €μž₯ν•  수 μžˆλŠ” μ‚¬μš©μžμ˜ κΈ°λ³Έ λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€. μ •λ„λ‘œ 해석할 수 μžˆμ„ 것 κ°™λ„€μš”! μ•±μ—μ„œ μ‚¬μš©λ˜κ±°λ‚˜ ν•„μš”ν•œ 데이터λ₯Ό 영ꡬ적으둜 λ³΄κ΄€ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œλŠ” λ„€νŠΈμ›Œν¬ μ„œλ²„ 이용, CoreData, UserDefaults 등이 μžˆμŠ΅λ‹ˆλ‹€. 이 쀑 UserDefaults λŠ” λŸ°νƒ€μž„ ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λ©΄μ„œ, 앱이 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ κΈ°λ³Έ μ €μž₯μ†Œ (default dat..