분류 전체보기 87

Swift - PickerView

PickerView - 사용자에게 선택할 수 있는 여러 옵션을 제공하는 위젯 - 주로 선택 목록, 날짜, 시간 등과 같은 데이터를 표시하고 사용자가 원하는 값을 선택할 수 있도록 함 사용해보기 1. PickerView 추가 2. PickerView, outlet 변수 추가 3. UIPickerViewDelegate, UIPickerViewDataSource 프로토콜 구현 - pickerView를 사용하려면 먼저 UIPickerViewDelegate와 UIPickerViewDataSource 프로토콜을 구현해야 함 - UIPickerViewDelegate : pickerView의 동작 커스터마이즈하는 데 사용 - UIPickerViewDataSource : pickerView에 데이터를 제공 - 위의 오류..

Swift 2023.07.19

Swift - 비동기 처리 (Completion Handler)

Completion Handler - 비동기 작업이 완료되었을 때 실행되는 코드 블록 (callback) - 주로 비동기 작업의 결과나 상태를 전달하고 처리하는 용도로 사용 - 비동기 작업이 완료되면 그 결과를 즉시 처리 - 일반적으로 함수의 매개변수로 전달되며, 작업이 완료된 후에 호출 - 이때 작업의 성공 여부나 결과 등을 전달 가능 - 일반적으로 'Result' 타입이나 옵셔널, 매개변수 목록을 이용하여 결과 전달 비동기적으로 데이터를 가져오는 함수 예시 func fetchData(completion: @escaping (Result) -> Void) { let url = URL(string: "https://example.com/data")! URLSession.shared.dataTask(wit..

Swift 2023.07.15

Swift - 비동기처리(async / await)

비동기 처리 - 프로그램이 여러 작업을 동시에 실행거나 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있는 방식 - 일반적으로 동기 처리는 한 작업이 끝나기를 기다리는 동안 다른 작업은 수행하지 못하고 실행이 차단 됨 - 비동기 처리는 한 작업이 완료되기 전에도 다른 작업을 수행할 수 있어 프로그램의 응답성과 성능 향상 - 주로 I/O 작업(서버 통신), 긴 시간이 소요되는 작업을 처리할 때 사용 - 비동기 처리를 통해 멀티 태스킹 수행하고 반응적이고 효율적인 살행 가능 - 사용 방법 : 콜백(callback) 기반 방식, 프로미스(Promise), 비동기/대기(async/await) 패턴 등 async/await - 'async' 키워드를 사용하여 비동기 함수 정의 - 'await' 키워드..

Swift 2023.07.14

Swift - sort, sorted 함수 비교

sort 함수 - 배열을 직접 정렬하여 순서를 변경 - 정렬된 배열을 반환하지 않고, 원래의 배열을 정렬된 상태로 변경 - 변수로 선언된 배열에 사용 - 배열의 요소를 서로 비교하면서 정렬 알고리즘을 적용하여 배열을 재정렬 var numbers = [4, 2, 1, 3] numbers.sort() print(numbers) // 출력: [1, 2, 3, 4] - 기본적으로 오름차순 정렬됨 내림차순 정렬 var numbers = [4, 2, 1, 3] numbers.sort(by: >) print(numbers) // 출력: [4, 3, 2, 1] - sort(by:) 메서드 : 기본적으로 오름차순 정렬이지만, '>' 를 사용하여 내림차순으로 정렬 sorted 함수 - 배열의 정렬된 복사본을 반환 - 원래..

Swift 2023.07.13

Swift - 고차함수 (compactMap, flatMap)

compactMap - 컬렉션의 각 요소를 변환하고, 변환된 결과 중에서 'nil' 이 아닌 값들로 구성된 새로운 컬렉션을 만듦 - 변환 과정에서 옵셔널 값을 처리 -> 옵셔널 바인딩 기능을 가짐 (옵셔널 제거) - 반환 된 값이 'nil' 이 아닌 경우에만 최종 컬렉션에 포함 기본 형식 func compactMap(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult] - Element : 컨테이너 요소 타입 - ElementOfResult : 변환 후 타입 - transform : 클로저로, 컨테이너의 각 요소에 대해 실행되는 변환 작업을 정의. 옵셔널 값을 반환 (ElementOfResult?) compactM..

Swift 2023.07.12

Swift - 고차함수 (map, filter, reduce)

* 고차함수 (Higher-order Function) - 다른 함수를 인자로 받거나 함수를 반환하는 함수 - Swift의 함수(클로저)는 일급시민이기 때문에 함수의 전달 인자로 전달할 수 있으며, 함수의 결과 값으로 반환할 수 있음 * 종류 map filter reduce forEach compactMap FlatMap map 함수 - 컨테이너(예: 배열)의 각 요소에 변환(transform)을 적용하여 새로운 컨테이너를 생성 - 변환은 클로저(익명 함수)를 사용하여 수행 기본 형식 func map(_ transform: (Element) throws -> T) rethrows -> [T] - Element : 컨테이너 요소 타입 - T : 반환 후 요소 타입 - transform : 매핑 클로저로, ..

Swift 2023.07.11

Swift - 의존성 주입(Dependency Injection)

의존성 : Dependency - 객체 지향 프로그래밍에서 Dependency는 '서로 다른 객체 사이에 의존 관계가 있는 것'을 말함 - 즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받는다는 것 import UIKit // 의존성이 있는 프로토콜 protocol Talk { func sayHi() } // Talk 프로토콜을 채택하여 구현한 클래스 class FriendTalk : Talk{ func sayHi() { print("FriendTalk - sayHi()") } } // 의존성을 주입받은 클래스 class LetsTalk{ private let talk : Talk init(){ self.talk = FriendTalk() //FriendTalk 인스턴스를 직접 생성하여 주입 } f..

Swift 2023.07.10

Swift - 문서화 (퀵헬프 표시 주석 작성 방법)

* 퀵헬프 (Quick Help) - Apple의 개발도구인 Xcode에서 제공하는 기능으로, 코드 문서와 설명을 즉시 확인 할 수 있는 기능 - 개발자가 작성한 코드에 대한 문서화 및 주석을 표시하여 코드 작성 중 필요한 정보를 쉽게 엑세스할 수 있도록 도와 줌 - 사용방법 : 커서를 원하는 코드 식별자 위에 놓고 'Option(Alt)' 키 클릭하면 패널이 나타남 * 퀵헬프 주석 작성 방법 1. 한 줄 주석 - 슬래시 세 개 ( / / / ) 사용 /// 슬래시 3개를 사용하요 주석을 달 수 있음 /// 자기소개 함수 func introduce(name : String, age : Int) -> String { print(name, age) var introduce = "안녕하세요 저는 \(name)..

Swift 2023.07.09

Swift - 디자인 패턴(생성 관련) - 빌더 패턴

* Builder pattern - 복잡한 객체의 생성과 표현을 서로 분리해 유사한 타입을 생성하기 위해 동일한 프로세스가 사용될 수 있게 함 - 객체 생성 과정을 단계별로 나누고, 유연하고 가독성 있는 방법으로 복잡한 객체를 생성하는 디자인 패턴 - 주로 많은 매개변수를 가진 객체를 생성하거나, 객체 생성 과정을 다양하게 구성하고자 할 때 사용 - 복잡한 객체를 일관된 방식으로 생성하여 가독성 있게 만들어주고, 객체 생성 과정에 유연성 제공 - 객체 생성에 필요한 다양한 구성 요소들을 분리하여 유지 및 확장이 용이하게 만듦 - 선택적인 매개변수나 기본값이 있는 매개변수 등 처리하기 용이 - 작은 규모의 객체에서는 비효율적 * 구성요소 1. 제품(Product) - 빌더 패턴을 통해 생성하고자 하는 복잡..

Swift 2023.07.08

Swift - 디자인 패턴(생성 관련) - 싱글톤

* Singleton (싱글톤 패턴) - 어떤 클래스의 인스턴스가 오직 하나만 생성되고, 어디서든지 그 인스턴스에 접근할 수 있도록하는 디자인 패턴 - 전역 변수를 사용하지 않고 하나의 공유 인스턴스를 사용하여 데이터를 관리하고, 다른 객체들이 이 인스턴스를 공유하여 사용 - 메모리를 인스턴스 하나에만 할당하여 공유하며 사용하므로 메모리를 낭비하지 않음 장점 - 전역적인 접근성 : 어디서든 동일한 인스턴스에 접근 가능 -> 데이터 공유 및 상태 유지에 용이, 객체 간 일관된 동작 보장 - 리소스 공유 : 인스턴스는 하나이므로, 매번 리소스를 새로 할당하는 비용을 절약 가능 단점 - 의존성과 테스트 어려움 : 싱글톤은 전역적인 접근성을 가짐 -> 다른 객체들에 대한 의존성 강화 및 테스트 어려워짐 (의존성..

Swift 2023.07.08