swift

·🍎 iOS & Swift
λ“€μ–΄κ°€λ©° β˜€οΈ 기초 문법 κ³΅λΆ€μ˜ ν•„μš”μ„±μ„ λŠκ»΄μ„œ μ΄ˆμ‹¬μœΌλ‘œ λŒμ•„κ°€ μ‘°κΈˆμ”© κ³΅λΆ€ν•˜λ €κ³  ν•œλ‹€. μ§€κΈˆ κ³΅λΆ€ν•˜κ³ μž ν•˜λŠ” 것듀이 λ‹¨μˆœ 정리가 λ˜μ§€ μ•Šλ„λ‘ 계속 κ³ λ―Όν•˜κ³  μ—°κ΅¬ν•˜λŠ” μžμ„Έλ₯Ό 가지도둝 ν•˜μž. κΈ°μ΄ˆλŠ” κ°€μž₯ μ‰¬μ›Œμ„œκ°€ μ•„λ‹ˆλΌ κ°€μž₯ μ€‘μš”ν•΄μ„œ κ·Έ μ˜λ―Έκ°€ μžˆμŒμ„ κΉ¨λ‹«μž. ifλ¬Έ πŸ™‹πŸ»‍♂️ νŠΉμ • μ‘°κ±΄μ—μ„œλ§Œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•˜κ±°λ‚˜ λ˜λŠ” μ‹€ν–‰ν•˜μ§€ 말아야 ν•˜κ±°λ‚˜ ν•˜λŠ” μƒν™©μ—μ„œ 쓰인닀. 말 κ·ΈλŒ€λ‘œ 쑰건에 따라 λ‹€λ₯Έ 처리λ₯Ό ν•΄μ£Όκ³  싢을 λ•Œ μ‚¬μš©ν•œλ‹€. ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€λ‹€ 보면 정말 ν•„μˆ˜μ μœΌλ‘œ 쑰건문을 μ‚¬μš©ν•΄μ„œ 쑰건에 λ”°λ₯Έ 처리λ₯Ό ν•΄μ£ΌλŠ” 상황이 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— ν•„μˆ˜μ μœΌλ‘œ μ•Œκ³  μžˆμ–΄μ•Ό ν•˜λŠ” λ‚΄μš©μ΄λ‹€. μ€‘μš”ν•œ 건 if문을 μ‚¬μš©ν•  수 μžˆλŠ” μƒν™©μ—μ„œ switch-case문을 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 것인데 μ–΄λ–»κ²Œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν• μ§€λŠ” 적..
·🍎 iOS & Swift
πŸ’₯ 인사말 μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€ γ€° πŸ‘‹ λ‹€μŒ μΉ΄ν…Œκ³ λ¦¬μ—μ„œλŠ” λͺ¨λ₯΄λŠ” κ°œλ…μ΄λ‚˜ ν‚€μ›Œλ“œ, 문법 λ“± λ‹€μ–‘ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. λ‹€μŒ λ‚΄μš©μ€ μ €μ˜ μΈμŠ€νƒ€ 개발 둜그 계정(@taekki.dev)에도 μ˜¬λΌκ°€λ‹ˆ λ§Žμ€ 관심 λΆ€νƒλ“œλ €μš” :) κ°œλ…μ˜ λΉˆκ³΅κ°„μ„ λ©”κΏ€ 수 μžˆλŠ” κ·Έλ‚ κΉŒμ§€ ν™”μ΄νŒ…ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 그럼 였늘 ν¬μŠ€νŒ… μ‹œμž‘ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸ™Œ πŸ’¬ λ“€μ–΄κ°€λ©° UIWindowλ₯Ό 처음 λ§ˆμ£Όν•˜κ±°λ‚˜, κ°€μž₯ 많이 λ³΄λŠ” 곳이 μ–΄μ©Œλ©΄ SceneDelegate.swift λ‚˜ AppDelegate.swift 일지도 λͺ¨λ¦…λ‹ˆλ‹€. 항상 κ°€λ³κ²Œ μ§€λ‚˜μΉ˜κΈ°λ§Œ ν–ˆλ˜ UIWindowκ°€ 무엇인지 μ΄λ²ˆμ— μ•Œμ•„λ³΄κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€. 이번 글은 Apple κ³΅μ‹λ¬Έμ„œμ˜ ꡬ쑰λ₯Ό λ°”νƒ•μœΌλ‘œ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€. 🌱 UIWindow의 νƒ€μž… πŸ“Œ νƒ€μž…(Type) - 클래슀 νƒ€μž…μ€ 클래슀(Cl..
·🍎 iOS & Swift
πŸ˜€μ˜€λŠ˜μ€ κ°„λ‹¨ν•˜κ²Œ Delegate Pattern을 μ μš©ν•΄λ³΄λŠ” μ˜ˆμ‹œ μ€‘μ—μ„œ ν™”λ©΄ μ „ν™˜ μ‹œ 데이터λ₯Ό λ‹΄μ•„λ³΄λ‚΄λŠ” μž‘μ—…μ„ ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. πŸ§‘πŸ»‍πŸ’» λ“€μ–΄κ°€λ©° Delegate Pattern(πŸ˜‡? 😈??), 항상 κ³΅λΆ€ν•˜λ©΄μ„œ κ·Έ μˆœκ°„μ—λŠ” μ΄ν•΄ν–ˆκ³  λΆ„λͺ… μ•Œκ² λŠ”λ° λ„λŒ€μ²΄ μ–΄λŠ 뢀뢄에 · 또 μ–Έμ œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€ 감이 μ•ˆ μž‘νž™λ‹ˆλ‹€... μ € μ—­μ‹œλ„ κ·ΈλŸ°λ°μš”... μ–΄μ©” 수 μ—†μ–΄μš”... λ‹€μ–‘ν•œ 상황에 써보렀고 λ…Έλ ₯ν•΄λ³΄λŠ” 수 밖에 μ΄λ²ˆμ— μ΅œλŒ€ν•œ μ—¬λŸ¬ 상황에 μ‚¬μš©ν•΄λ³΄λ©΄μ„œ μ–΄λ–€ μž₯단점이 μžˆλŠ”μ§€λ„ μ•Œμ•„λ³΄κ³  μ‚¬μš©λ²•μ— μ΅μˆ™ν•΄μ§€λ €κ³  ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 같이 λ…Έλ ₯ν•΄λ³΄μ•„μš”. πŸ“Ί μ‹€ν–‰ ν™”λ©΄ 였늘 κ΅¬ν˜„ν•΄ λ³Ό 화면은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 크게 μƒν’ˆ ν™”λ©΄κ³Ό μž₯λ°”κ΅¬λ‹ˆ λ‹΄κΈ° ν™”λ©΄ 2κ°€μ§€λ‘œ κ΅¬μ„±λ˜μ–΄μžˆκ΅¬μš”. μš°μ„  흐름을 μ„€λͺ…ν•΄λ“œλ¦΄κ²Œμš”. μƒν’ˆ ν™”λ©΄μ—μ„œ μž₯λ°”κ΅¬λ‹ˆ λ²„νŠΌμ„ 클..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€. 이번 글은 μ •λ¦¬ν˜•νƒœλ‘œ μž‘μ„±ν•΄λ‘μ–΄ μ–΄νˆ¬κ°€ 쑰금 λ”±λ”±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.. μ΄ν•΄λΆ€νƒλ“œλ €μš” πŸ₯² 이번 글은 μ–΄νˆ¬λ„ λ”±λ”±ν•˜κ³  쀄글 ν˜•μ‹μ΄λ‹€. λ„ˆλ¬΄ μ–΄λ ΅κ²Œ 생각할 ν•„μš”κ°€ μ—†λŠ” κ°œλ…μ΄λ‹€. λ‹¨μˆœν•˜κ²Œ λ§žμ„œλ³΄μž. μš”μ•½ ν”„λ‘œν† μ½œμ—μ„œ μ‚¬μš©λ˜λŠ” μ œλ„€λ¦­ Placeholder의 λŠλ‚Œμ΄λ‹€. Associated Type은 μ›λž˜ typealiasμ˜€λŠ”λ°, Swift 2.2λΆ€ν„° Associated Typeμ΄λž€ ν‚€μ›Œλ“œλ‘œ λ°”λ€Œμ—ˆλ‹€. μ„€λͺ… μœ„μ˜ 두 가지 κ΄€μ μ—μ„œ 보면 λ‚΄μš©μ€ 크게 어렡지 μ•Šλ‹€. μ•„λž˜μ˜ μ˜ˆμ‹œλ‘œ ν•¨κ»˜ 이해해보겠닀. μš°μ„  ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ 잠깐 이해해보면, ν”„λ‘œμ νŠΈλŠ” ν˜„μž¬ MVVM νŒ¨ν„΄μ„ λ”°λ₯΄κ³  μžˆλ‹€. λ‹€μŒ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” ViewModel을 κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€. 보톡 각 ViewControlle..
·🍎 iOS & Swift
ν•΄λ‹Ή 글에 μ‚¬μš©λœ μ˜ˆμ‹œλŠ” 2가지 κΈ€μ—μ„œ κ°€μ Έμ™”μŠ΅λ‹ˆλ‹€. μΆœμ²˜λŠ” κΈ€ λ§ˆμ§€λ§‰μ— μ μ–΄λ†“μ•˜μŠ΅λ‹ˆλ‹€. μ°Έκ³ ν•˜μ…”μ„œ κΈ€ μ½μ–΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :) πŸ’¬ 듀어가기전에 κ²°λ‘ λΆ€ν„° λ§ν•˜κ³  μ‹œμž‘ν•˜κ² μŠ΅λ‹ˆλ‹€. typealiasλŠ” μ½”λ“œλ₯Ό μ’€ 더 κ°„κ²°ν•˜κ²Œ κ°€λ…μ„±μžˆκ²Œ μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ–Έμ œ μ‚¬μš©ν•˜λƒκ΅¬μš”? 정닡은 μ—†μŠ΅λ‹ˆλ‹€. λ‹€λ§Œ 일반적으둜 μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” 있죠. 이번 κΈ€μ—μ„œλŠ” κ·Έ 뢀뢄에 λŒ€ν•΄μ„œ ν•¨κ»˜ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ—’ typealiasλž€ typealiasλž€ νƒ€μž…μ— 뢙일 수 μžˆλŠ” 별칭, μ•½μΉ­μž…λ‹ˆλ‹€. typealias (μ‚¬μš©ν•  별λͺ…) = (μ‘΄μž¬ν•˜λŠ” νƒ€μž…) ex) typealias Nickname = Int ex) typealias Codable = Decodable & Encodable ex) ... typealiasλŠ” μƒˆ..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€~ μ˜€λŠ˜μ€ Convenience initializerκ°€ 무엇인지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€! μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 크게 2가지λ₯Ό μ‚΄νŽ΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. Designated initializer, Covenience initializer μ°¨λ‘€λŒ€λ‘œ 지정 μ΄λ‹ˆμ…œλΌμ΄μ €, 편의 μ΄λ‹ˆμ…œλΌμ΄μ €λΌκ³  해석해볼 수 μžˆλŠ”λ°, 지정 μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 클래슀(ꡬ쑰체)λ‚΄μ˜ λͺ¨λ“  ν”„λ‘œνΌν‹°κ°€ μ΄ˆκΈ°ν™”λ  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μ΄λ‹ˆμ…œλΌμ΄μ €μ΄κ³ , 편의 μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 좔가적인 μž‘μ—…μ„ ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 보쑰 μ΄λ‹ˆμ…œλΌμ΄μ €μž…λ‹ˆλ‹€. Designated init 의 νŒŒλΌλ―Έν„° 일뢀λ₯Ό κΈ°λ³Έκ°’μœΌλ‘œ μ„€μ •ν•΄μ„œ Convenience init μ•ˆμ—μ„œ Designated init 을 ν˜ΈμΆœν•΄μ„œ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€. μ€‘μš”ν•œ ν¬μΈνŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. Convenience i..
·🍎 iOS & Swift
μ•ˆλ…•ν•˜μ„Έμš”, νƒœλΌμž…λ‹ˆλ‹€ :) μš”μ¦˜μ—λŠ” ν•œ 단계 더 μ„±μž₯ν•˜κΈ° μœ„ν•΄μ„œ λ‹€μ‹œ κΈ°μ΄ˆλΆ€ν„° μ°¨κ·Όμ°¨κ·Ό κ³΅λΆ€ν•˜λŠ” μ€‘μž…λ‹ˆλ‹€. ν™•μ‹€νžˆ 곡뢀λ₯Ό ν•˜λ‹€λ³΄λ‹ˆ 이전에 아무 생각없이 μž‘μ„±ν•˜λ˜ μ½”λ“œλ‚˜ κ°œλ…λ“€μ΄ λˆˆμ— ν™• λ„λ”λΌκ΅¬μš”... μ•Œκ³  μ‚¬μš©ν•˜λŠ”κ±°λž‘ λͺ¨λ₯΄κ³  μ‚¬μš©ν•˜λŠ”κ±°λž‘μ€ μ—­μ‹œ μ—„μ²­λ‚œ 차이이기 λ•Œλ¬Έμ— 항상 κΈ°μ΄ˆλΆ€ν„° νƒ„νƒ„νžˆ ν•©μ‹œλ‹€... (근데 기초만 κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄ ν₯λ―Έκ°€ λ–¨μ–΄μ§€λŠ”κ±΄ 사싀... κ·ΈλŸ¬λ‹ˆκΉŒ 적절히 μš”λ¦¬μ‘°λ¦¬ μ•„μ‹œμ£ ...? πŸ˜‹) frame vs bounds μ˜€λŠ˜μ€ frameκ³Ό bounds에 λŒ€ν•΄ 정리할 κ±°μ˜ˆμš”. μ•„ 근데, μš”μ•½λ²„μ „μ΄λ‹ˆκΉŒ μžμ„Έν•˜μ§€ μ•Šμ•„λ„ μ΄ν•΄ν•΄μ£Όμ„Έμš”... κΌΌκΌΌν•œ μ„€λͺ…버전은 λ‚˜μ€‘μ—... μš°μ„  λ‹€ μ΄ν•΄ν•˜κ³  λ‚˜μ„œ 정리λ₯Ό 해보면 frameκ³Ό bounds의 μ°¨μ΄λŠ” λ‹€μŒ 3κ°€μ§€λ‘œ 정리할 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. μ’Œν‘œκ³„μ— λŒ€ν•œ μ°¨..
·🍎 iOS & Swift
μš°λ¦¬λŠ” μ˜΅μ…”λ„μ— λŒ€ν•΄ λ¬Όμ—ˆμ„ λ•Œ, μ–Όλ§ˆλ‚˜ 잘 λŒ€λ‹΅ν•  수 μžˆμ„κΉŒ? Summary μ˜΅μ…”λ„μ€ λ³€μˆ˜μ— 값이 μžˆμ„ μˆ˜λ„ 있고, 없을 μˆ˜λ„ μžˆλŠ” μƒνƒœ(nil)λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ Swift에 λ„μž…λœ κ°œλ…μž…λ‹ˆλ‹€. μ˜΅μ…”λ„μ€ Enum ν˜•νƒœλ‘œ μ •μ˜λ˜μ–΄ 있고, κ°’μ˜ 있고 μ—†μŒμ„ 각 Case둜 가지고 μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„λ‘œ ν‘œν˜„λœ 값에 μ ‘κ·Όν•˜λŠ” λ°©λ²•μœΌλ‘œλŠ” Forced Unwrapping(κ°•μ œ μ–Έλž˜ν•‘), Optional Binding(μ˜΅μ…”λ„ 바인딩), Nil-Coalescing Operator(Nilλ³‘ν•©μ—°μ‚°μž)κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„ 체이닝을 ν†΅ν•΄μ„œ μ˜΅μ…”λ„ λ°”μΈλ”©μœΌλ‘œ ν‘œν˜„λœ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ˜΅μ…”λ„(Optional) λ„ˆλž€ 녀석 μ˜΅μ…”λ„μ˜ 의미 자 μš°λ¦¬λŠ” κ·Όλ³ΈμžˆλŠ” 개발자이기 λ•Œλ¬Έμ— Apple 곡식 λ¬Έμ„œλ₯Ό 보도둝 ν•˜μ£ . (..
taeeekki
'swift' νƒœκ·Έμ˜ κΈ€ λͺ©λ‘ (10 Page)