🧑💻/Swift
-
디자인패턴 - MVC, MVP, MVVM🧑💻/Swift 2021. 5. 10. 15:39
디자인 패턴은 3가지로 구분됩니다. 1. 구조 디자인 패턴 : 객체가 어떻게 결합되고 구성되는지 설명합니다. MVC, MVVM 등이 있습니다. 2. 행위 디자인 패턴 : 객체의 통신 방법을 설명합니다. Delegation, Strategy, Observer 등이 있습니다. 3. 생성 디자인 패턴 : 객체를 생성하거나 인스턴스화 하는 방법을 설명합니다. Builder, Singleton, Prototype 등이 있습니다. 이 중 구조적 디자인 패턴(Structural Design Pattern)에 대해 알아보겠습니다. MVC 패턴 : Model-View-Controller Model : 데이터를 구성하는 틀. struct, class 등 View : 화면에 표시되는 요소나 제어. UIView의 subcla..
-
iOS의 메모리 관리 - strong / weak / unowned🧑💻/Swift 2021. 5. 8. 17:36
iOS의 메모리 관리 ARC(Automatic Reference Counting) 컴파일 시 자동으로 retain, release 코드를 추가해 줍니다. 인스턴스가 생성되면 정보를 저장하기 위해 메모리를 힙에 할당합니다. 인스턴스를 참조하는 프로퍼티의 갯수(retain count)를 체크하고, 참조 횟수가 0이 되면 메모리에서 해제합니다. strong vs weak vs unowned strong (default) weak unowned 구분 강한 참조 약한 참조 약한 참조 / 미소유 참조 소유권 O X X 참조 시 retain count 증가 O X X optional non-optional 메모리 해제 retain count가 0이면 해제됨. 객체를 추적하여 해제 시 nil로 변경 해제 후 참조 시 ..
-
SwiftUI Preview Device (미리보기) 바꾸기🧑💻/Swift 2021. 1. 25. 17:47
SwiftUI를 사용하면 미리 보기 화면이 제공됩니다. 👏👏👏 정말 필요하던 기능이었어요. 애플 만세 왠지 시뮬레이터 선택하면 미리보기 화면도 바뀔 것 같은 그런 느낌인데 그렇지 않습니다. ㅎㅎ; Simulator Device != Preview Device 설정은 두 가지 방법이 있습니다. (2번 자동 완성 추천합니다. 급하면 바로 스크롤 다운) 1. 직접 입력해서 설정하기 코드를 직접 작성 후 Build > Resume 버튼 클릭하면 반영됩니다. ContentView() .previewDevice("iPhone 12") 저 String에 넣을 값은 토씨 하나 틀리면 안 되는데 기종이 뭐가 있는지 어떻게 보느냐? 하면 previeDevice를 option 키를 누른 채로 클릭해주세요. xcrun sim..
-
소스 코드에 구분선 넣기 // MARK: -🧑💻/Swift 2021. 1. 7. 00:02
💡 요약 미리 보기 // MARK: - 로 소스코드에 가로줄 삽입이 가능합니다. 내용 블럭 > 마우스 우클릭 > Create Code Snippet 를 선택해 자동완성을 등록할 수 있습니다. Title : Mark Comment Summary : Adds a mark comment Details : // MARK: - Completion : mark ⬇️ ⬇️ 자세히 보기 ⬇️ ⬇️ 개발하다 보면 수많은 Delegate를 채택하여 몸집이 커지는 경우를 쉽게 볼 수 있습니다. import UIKit class WeatherViewController: UIViewController, UITextFieldDelegate, WeatherManagerDelegate { // ... } WeatherViewCont..
-
🐛 일 년의 마지막 주 선택 시 연도가 올라가는 문제 (YYYY vs yyyy)🧑💻/Swift 2020. 12. 21. 01:44
💡 요약 미리 보기 yyyy를 쓰세요. YYYY : 주 기반 연도 yyyy : 일반 달력 연도 ⬇️ ⬇️ 자세히 보기 ⬇️ ⬇️ UIDatePicker에서 선택한 날짜를 UITextField에 연도-월-일로 출력하기 위해 다음과 같이 작업했습니다. extension DateFormatter { func dateToString(_ date: Date) -> String { self.dateFormat = "YYYY-MM-dd" return string(from: date) } /* 날짜 형식 문자열 */ func getDatePickerDateValue() -> String { return dateFormatter.dateToString(datePicker.date) } // 2020년 12월 27일 선택..