πŸ’» 개발/iOS

πŸ’» 개발/iOS

[iOS / Swift] 상속 VS μ΅μŠ€ν…μ…˜

μ΅μŠ€ν…μ…˜ μŠ€μœ„ν”„νŠΈμ˜ κ°•λ ₯ν•œ κΈ°λŠ₯으둜, ꡬ쑰체, 클래슀, μ—΄κ±°ν˜•, ν”„λ‘œν† μ½œ νƒ€μž…μ— μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 있게 ν•΄μ€€λ‹€. κΈ°λŠ₯을 μΆ”κ°€ν•˜λ €λŠ” νƒ€μž…μ˜ κ΅¬ν˜„λœ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ•Œμ§€ λͺ»ν•˜λ”라도 νƒ€μž…λ§Œ μ•Œκ³  μžˆλ‹€λ©΄ κΈ°λŠ₯을 ν™•μž₯ν•  수 μžˆλ‹€. μ΅μŠ€ν…μ…˜μœΌλ‘œ νƒ€μž…μ— μΆ”κ°€ν•  수 μžˆλŠ” κ²ƒλ“€μ—λŠ” μ—°μ‚° νƒ€μž… ν”„λ‘œνΌν‹° / μ—°μ‚° μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹° νƒ€μž… λ©”μ„œλ“œ / μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ μ΄ˆκΈ°ν™” μ„œλΈŒμŠ€ν¬λ¦½νŠΈ 쀑첩 νƒ€μž… νŠΉμ • ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•  수 μžˆλ„λ‘ κΈ°λŠ₯ μΆ”κ°€ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  μˆ˜λŠ” μžˆμ§€λ§Œ 기쑴에 μ‘΄μž¬ν•˜λŠ” κΈ°λŠ₯을 μž¬μ •μ˜(override)λŠ” λΆˆκ°€λŠ₯ν•˜λ‹€. 이것이 λ°”λ‘œ μƒμ†κ³Όμ˜ 차이이닀. 상속 VS μ΅μŠ€ν…μ…˜ 상속 - 클래슀 νƒ€μž…μ— ν™œμš© - 수직적으둜 ν™•μž₯ - μž¬μ •μ˜ κ°€λŠ₯ μ΅μŠ€ν…μ…˜ - 클래슀, ꡬ쑰체, μ—΄κ±°ν˜•, ν”„λ‘œν† μ½œ λ“± λͺ¨λ“  νƒ€μž…μ— ν™œμš© - 수..

πŸ’» 개발/iOS

[TIL] 22.08.25

κ³΅λΆ€ν•œ 것 λΆ€μŠ€νŠΈμ½”μŠ€ - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초 μ•Œκ²Œλœ 것 1. μ˜΅μ…”λ„ // someOptionalParm에 nil이 할당될 수 있음 func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParm에 nil이 할당될 수 μ—†μŒ func someFunction(someOptionalParam: Int) { // .... } nil이 할당될 수 μžˆλŠ”μ§€ μ—†λŠ”μ§€λ₯Ό ν‘œν˜„ nil의 κ°€λŠ₯성을 λͺ…μ‹œμ (μ½”λ“œ)으둜 ν‘œν˜„ κ°€λŠ₯ μ˜΅μ…”λ„μ΄ μ•„λ‹Œ 경우 nil 체크 없이 λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ nil둜 μΈν•œ μ˜ˆμ™Έ 상황을 μ΅œμ†Œν™” 2. μ˜΅μ…”λ„ ν‘œν˜„ 방법 // μ•”μ‹œμ  μΆ”μΆœ μ˜΅μ…”λ„ var optionalValue: Int! = 10 switch optionVa..

πŸ’» 개발/iOS

[TIL] 22.08.24

κ³΅λΆ€ν•œ 것 λΆ€μŠ€νŠΈμ½”μŠ€ - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초 μ•Œκ²Œλœ 것 1. λ§€κ°œλ³€μˆ˜ κΈ°λ³Έ κ°’ func setUserInfo(name : String, age : Int, region : String = "Deajeon") {} ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ λ§€κ°œλ³€μˆ˜μ— 기본적으둜 전달될 값을 미리 μ €μž₯ν•  수 있음 κΈ°λ³Έ 값을 κ°–λŠ” λ§€κ°œλ³€μˆ˜λŠ” λ§€κ°œλ³€μˆ˜ λͺ©λ‘ 쀑 맨 뒀에 μœ„μΉ˜ν•˜λŠ” 것이 μ’‹μŒ 2. μ „λ‹¬μΈμž λ ˆμ΄λΈ” // λ‚΄λΆ€μ—μ„œλŠ” λ§€κ°œλ³€μˆ˜ 이름 func greeting(to friend : String, from me : String) { print("Hello, \(friend)!, my name is \(me)") } // ν˜ΈμΆœν•  λ•ŒλŠ” μ „λ‹¬μΈμž λ ˆμ΄λΈ” greeting(to : "doko", from : "kodo") ..

πŸ’» 개발/iOS

[TIL] 22.06.03

iOS μ—μ„œ ν™”λ©΄ 이동을 ν•˜λŠ” λ°©λ²•μ—λŠ” 4가지가 μžˆλ‹€. ViewController μ—μ„œ ν™”λ©΄ μ „ν™˜ ViewController κ°€ λ‹€λ₯Έ ViewController λ₯Ό ν˜ΈμΆœν•˜μ—¬ ν™”λ©΄ μ „ν™˜ NavigationViewController λ₯Ό μ‚¬μš©ν•˜μ—¬ ν™”λ©΄ μ „ν™˜ ν™”λ©΄ μ „ν™˜μš© 객체 Segue λ₯Ό μ‚¬μš©ν•˜μ—¬ ν™”λ©΄ μ „ν™˜ 1. ViewController μ—μ„œ ν™”λ©΄ μ „ν™˜ ViewController μœ„μ˜ View λ₯Ό λ‹€λ₯Έ View 둜 κ΅μ²΄ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ‘œ 인해 μ‚¬μš©μ„ μ§€μ–‘ν•œλ‹€. νŠΉμ •ν•œ κ²½μš°μ—λ§Œ μ‚¬μš©ν•œλ‹€. μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” View 의 Visibility 속성을 μ΄μš©ν•˜μ—¬ λ³€κ²½ν•˜λŠ” 방식을 자주 μ‚¬μš©ν–ˆμ—ˆλŠ”λ° iOS μ—μ„œλŠ” μ§€μ–‘ν•œλ‹€κ³  ν•˜λ‹ˆ μ’€ μ‹ κΈ°ν–ˆλ‹€. 이 뢀뢄에 λŒ€ν•΄μ„  μ’€ 더 찾아보고 정리해봐야겠닀. 2. ViewContr..

πŸ’» 개발/iOS

[TIL] 22.05.27

κ³΅λΆ€ν•œ 것 Swift 문법 μ•Œκ²Œλœ 것 1. Guard Guard ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 쑰건에 false인 κ²½μš°μ—λŠ” else ꡬ문이 μ‹€ν–‰λ˜μ–΄ μ΄ν›„μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ λͺ»ν•˜κ²Œ ν•œλ‹€. continue 와 λΉ„μŠ·ν•˜λ‹€. import Foundation func guardTest(value : Int?) { guard let value = value else {return} print(value) } guardTest(value : 2) guardTest(value : nil) // 아무것도 좜λ ₯λ˜μ§€ μ•ŠμŒ 쑰건문과 μœ μ‚¬ν•œ κΈ°λŠ₯이라고 λ³Ό 수 μžˆλŠ”λ° Guard λŠ” else λ₯Ό κ°•μ œν•œλ‹€. // 일반적인 쑰건문 if 쑰건 == true { // 참인 κ²½μš°μ— μ‹€ν–‰ν•  μ½”λ“œ } else { // 거짓인 κ²½μš°μ— μ‹€ν–‰ν•  μ½”λ“œ } // G..

πŸ’» 개발/iOS

[TIL] 22.05.26

κ³΅λΆ€ν•œ 것 Swift 문법 μ•Œκ²Œλœ 것 1. ν΄λž˜μŠ€μ™€ ꡬ쑰체의 차이 1. 곡톡점 값을 μ €μž₯ν•  ν”„λ‘œνΌν‹°λ₯Ό μ„ μ–Έν•  수 있음 ν•¨μˆ˜μ  κΈ°λŠ₯을 ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•  수 있음 λ‚΄λΆ€ 값을 .λ₯Ό 톡해 μ ‘κ·Όν•  수 있음 μƒμ„±μžλ₯Ό μ‚¬μš©ν•΄ 초기 μƒνƒœλ₯Ό μ„€μ •ν•  수 있음 Extension 을 μ‚¬μš©ν•˜μ—¬ κΈ°λŠ₯을 ν™•μž₯ν•  수 있음 Protocol 을 μ±„νƒν•˜μ—¬ κΈ°λŠ₯을 μ„€μ •ν•  수 있음 2. 차이점 - 클래슀 μ°Έμ‘° νƒ€μž… ARC 둜 λ©”λͺ¨λ¦¬λ₯Ό 관리 상속 κ°€λŠ₯ νƒ€μž… μΊμŠ€νŒ… 을 톡해 λŸ°νƒ€μž„μ—μ„œ 클래슀 μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…μ„ 확인할 수 있음 deinit 을 μ‚¬μš©ν•˜μ—¬ 클래슀 μΈμŠ€ν„΄μŠ€μ˜ λ©”λͺ¨λ¦¬ 할당을 ν•΄μ œν•  수 있음 같은 클래슀 μΈμŠ€ν„΄μŠ€λ₯Ό μ—¬λŸ¬ 개의 λ³€μˆ˜μ— ν• λ‹Ήν•œ 뒀에 값을 λ³€κ²½μ‹œν‚€λ©΄ λͺ¨λ“  λ³€μˆ˜μ— 영ν–₯을 쀌 (λ©”λͺ¨λ¦¬λ₯Ό 볡사) - ꡬ쑰체 κ°’ νƒ€μž… 같은 ꡬ쑰체λ₯Ό ..

πŸ’» 개발/iOS

[TIL] 22.04.20

κ³΅λΆ€ν•œ 것 μ •μ²˜κΈ° 21λ…„ 3회차 μ•Œκ²Œλœ 것 [1κ³Όλͺ©] μ†Œν”„νŠΈμ›¨μ–΄ 섀계 1. λžŒλ°”μš° 뢄석 기법 - 객체 λͺ¨λΈλ§ -> 동적 λͺ¨λΈλ§ -> κΈ°λŠ₯ λͺ¨λΈλ§ 순으둜 진헹 - 객체 λͺ¨λΈλ§ : 정보 λͺ¨λΈλ§μ΄λΌκ³ λ„ λΆ€λ₯΄λ©° 클래슀 λ‹€μ΄μ–΄κ·Έλž¨μ„ μž‘μ„± - 동적 λͺ¨λΈλ§ : μƒνƒœ λ‹€μ΄μ–΄κ·Έλž¨μ„ μž‘μ„± - κΈ°λŠ₯ λͺ¨λΈλ§ : 자료 흐름도(Data Flow Diagram)을 μž‘μ„± 2. μš”κ΅¬μ‚¬ν•­ 개발 ν”„λ‘œμ„ΈμŠ€ λ„μΆœ(μš”κ΅¬μ‚¬ν•­ μˆ˜μ§‘) -> 뢄석 -> λͺ…μ„Έ -> 확인(μš”κ΅¬μ‚¬ν•­ 검증) 3. μ• μžμΌ 개발 ν”„λ‘œμ„ΈμŠ€ - 읡슀트림 ν”„λ‘œκ·Έλž˜λ° : XP, 고객과 함꼐 2μ£Ό μ •λ„μ˜ 반볡 개발, TDD - 슀크럼 : 30μΌλ§ˆλ‹€ λ™μž‘ κ°€λŠ₯ν•œ μ œν’ˆμ„ μ œκ³΅ν•˜λŠ” μŠ€ν”„λ¦°νŠΈ 개발 4. UML 관계 - μΌλ°˜ν™” : Generalization, μ‹€μ„  삼각 ν™”μ‚΄ν‘œ, 일반적인 것과 ..

πŸ’» 개발/iOS

[TIL] 22.04.18

κ³΅λΆ€ν•œ 것 μ •μ²˜κΈ° 21λ…„ 1회차 μ•Œκ²Œλœ 것 [1κ³Όλͺ©] μ†Œν”„νŠΈμ›¨μ–΄ 섀계 1. λ””μžμΈ νŒ¨ν„΄ - 생성 νŒ¨ν„΄ : 좔상 νŒ©ν† λ¦¬, λΉŒλ”, νŒ©ν† λ¦¬ λ©”μ†Œλ“œ, ν”„λ‘œν† νƒ€μž…, 싱글톀 - ꡬ쑰 νŒ¨ν„΄ : μ–΄λŒ‘ν„°, λΈŒλ¦¬μ§€, μ»΄νΌμ§€νŠΈ, λ°μ½”λ ˆμ΄ν„°, νΌμ‚¬λ“œ, ν”„λ‘μ‹œ - ν–‰μœ„ νŒ¨ν„΄ : 컀맨트, μ˜΅μ €λ²„, μ „λž΅, μƒνƒœ 2. 객체지ν–₯ 뢄석 방법둠 - Cord-Yourdon : E-R λ‹€μ΄μ–΄κ·Έλž¨μ„ μ‚¬μš©ν•˜μ—¬ 객체의 ν–‰μœ„λ₯Ό 데이터 λͺ¨λΈλ§ ν•˜λŠ”λ° 초점 3. μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œ 뢄석 - ν”Œλž«νΌ κΈ°λŠ₯ 뢄석 - ν”Œλž«νΌ μ„±λŠ₯ νŠΉμ„± 뢄석 - 운영체제 뢄석 - λ„€νŠΈμ›Œν¬ 뢄석 - DBMS 뢄석 4. UML - 클래슀 λ‹€μ΄μ–΄κ·Έλž¨ : μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜λŠ” ν΄λž˜μŠ€λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό ν‘œμ‹œ - μ•‘ν‹°λΉ„ν‹° λ‹€μ΄μ–΄κ·Έλž¨ : μ‹œμŠ€ν…œ 내뢀에 μ‘΄μž¬ν•˜λŠ” μ—¬λŸ¬ ν–‰μœ„μ™€ λΆ„κΈ° 및 쑰건을 ν‘œμ‹œ ..

πŸ’» 개발/iOS

[TIL] 22.04.17

κ³΅λΆ€ν•œ 것 μ •μ²˜κΈ° 22λ…„ 1회차 μ•Œκ²Œλœ 것 [1κ³Όλͺ©] μ†Œν”„νŠΈμ›¨μ–΄ 섀계 1. μ†Œν”„νŠΈμ›¨μ–΄ 섀계 방법 - 상ν–₯식 섀계 방법 : λ°”ν…€μ—…, μž‘μ€ 문제λ₯Ό ν•΄κ²°ν•˜μ—¬ 큰 문제둜 톡합, 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° (Java) - ν•˜ν–₯식 섀계 방법 : νƒ‘λ‹€μš΄, 큰 문제λ₯Ό μž‘μ€ 문제둜 λΆ„ν•΄, 절차 쀑심 ν”„λ‘œκ·Έλž˜λ° (C) 2. 데이터 흐름도 - ν”„λ‘œμ„ΈμŠ€ : 원 - 데이터 흐름 : ν™”μ‚΄ν‘œ - 데이터 μ €μž₯ : 평행선 - μ’…λ£Œ : μ‚¬κ°ν˜• 3. UI 섀계 도ꡬ - 와이어 ν”„λ ˆμž„ : νŽ˜μ΄μ§€μ— λŒ€ν•œ λŒ€λž΅μ μΈ λ ˆμ΄μ•„μ›ƒ 및 UI μš”μ†Œ 섀계 - λͺ©μ—… : 와이어 ν”„λ ˆμž„μ—μ„œ λ””μžμΈ, μ‚¬μš© 방법 μ„€λͺ…, 평가λ₯Ό μœ„ν•΄ μ‹€μ œ ν™”λ©΄κ³Ό μœ μ‚¬ν•˜λ„λ‘ UIλ₯Ό λ³€κ²½ (정적) - μŠ€ν† λ¦¬λ³΄λ“œ : 와이어 ν”„λ ˆμž„μ—μ„œ μ½˜ν…μΈ  μ„€λͺ…, 흐름도 μΆ”κ°€ - ν”„λ‘œν† νƒ€μž… : 와이어 ν”„λ ˆμž„..

πŸ’» 개발/iOS

[TIL] 22.03.23

κ³΅λΆ€ν•œ 것 코루틴 μ•Œκ²Œλœ 것 1. 코루틴 μ–΄μ œμ— 이어 코루틴 에 λŒ€ν•΄ ν•™μŠ΅ν–ˆλ‹€. 코루틴은 코루틴 μŠ€μ½”ν”„ λ₯Ό ν†΅ν•΄μ„œ μ‹€ν–‰ν•  수 μžˆλ‹€. 코루틴 μŠ€μ½”ν”„ λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³ λ„ 코루틴을 μ‹€ν–‰ν•  수 μžˆμ§€λ§Œ 이런 κ²½μš°μ— μž‘μ—…μ΄ μ’…λ£Œλœ 코루틴에 λŒ€ν•΄ λ³„λ„μ˜ 처리λ₯Ό ν•΄μ€˜μ•Ό ν•œλ‹€. Coroutine Scope Coroutine Scope λŠ” μ½”λ£¨ν‹΄μ˜ λ²”μœ„λ₯Ό μ •μ˜ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€ 이닀. 말 κ·ΈλŒ€λ‘œ 코루틴이 μ‹€ν–‰λ˜λŠ” λ²”μœ„λ₯Ό μ§€μ •ν•œλ‹€. λͺ¨λ“  코루틴은 Scope λ‚΄μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜κ³  μ•‘ν‹°λΉ„ν‹° λ‚˜ ν”„λž˜κ·Έλ¨ΌνŠΈ 의 생λͺ…μ£ΌκΈ° 에 따라 코루틴 을 μ·¨μ†Œ ν•˜μ—¬ λ©”λͺ¨λ¦¬ λ¦­ 을 λ°©μ§€ν•œλ‹€. Global Scope 와 Coroutine Scope κ°€ μ‘΄μž¬ν•œλ‹€. 1. Global Scope : μ•±μ˜ 생λͺ…주기와 ν•¨κ»˜ λ™μž‘ν•˜κΈ°μ— λ³„λ„μ˜ 생λͺ… μ£ΌκΈ° 관리가 ..

고도고도
'πŸ’» 개발/iOS' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (2 Page)