본문 바로가기
728x90

Swift12

[iOS/Combine] Combine의 Publisher(Just, Sequence, Future, Fail, Empty, Deferred) Combine의 핵심 구성 요소는 Publisher와 Subscriber로, Publisher는 데이터를 발행하고 Subscriber는 이를 구독하여 처리합니다. PublisherCombine의 핵심 프로토콜로, 데이터 스트림을 생성하고 구독자에게 전달하는 역할Publisher는 타입을 가집니다:Output: 발행하는 데이터의 타입Failure: 오류의 타입JustJust는 단일 값을 발행하고 완료하는 가장 간단한 Publisher입니다. 주로 고정된 값을 전달할 때 사용합니다.import Combinelet justPublisher = Just("Hello, Just!")let subscriber = justPublisher.sink( receiveCompletion: { completion in.. 2024. 9. 23.
[Swift] global과 static은 기본적으로 lazy gobal과 static의 Lazy 초기화 Lazy 초기화란?Lazy 초기화는 변수가 실제로 사용될 때까지 초기화를 지연하는 기법을 말한다. 이는 프로그램의 시작 시점에 불필요한 메모리 사용을 피하고, 초기화 비용을 줄이기 위해 사용된다. 다시 말해, 변수가 처음 사용되기 전까지는 초기화되지 않는다.공식문서에서는 "lazy 저장 변수는 이것이 처음 사용되기 전까지 초기값이 계산되지 않는 프로퍼티 입니다. 사용자는 선언부에 lazy 수정자를 붙임으로써 lazy 저장 변수를 나타낼 수 있습니다."라고 되어있다.사용자는 항상 lazy 프로퍼티를 variable로 선언해야만 한다.왜냐하면 이 프로퍼트의 초기값을 인스턴스 초기화가 완료된 시점까지 알 수 없기 때문이다.상수 프로퍼티는 초기화가 끝나기전까지 반드시 .. 2024. 7. 30.
[Swift] 싱글톤(Singleton)패턴과 예제 Singleton Pattern이란? 싱글톤 패턴이란, 특정 클래스의 인스턴스가 하나만 생성되도록 보장하고, 이에 대한 전역적인 접근점을 제공하는 디자인 패턴 전역 접근싱글톤패턴은 전역적인 접근이 가능하다는 특징과 동시에 단점이 될 수 있다.전역 접근은 어플리케이션 전체에서 단 하나의 인스턴스에 접근할 수 있어, 여러 곳에서 동일한 객체를 필요로 할 때 유용하지만, 그만큼 유의해야할 점도 있다. How 어떻게 쓰는가?static과 private initclass Singleton { static let shared = Singleton() private init() { // 초기화 코드 }} static 키워드는 클래스의 인스턴스를 전역적으로 접근할 수 있도록 하기 .. 2024. 7. 23.
[Swift/UIKit] UIColor를 HexString으로 받는 Extension extension UIColor { convenience init(hexString: String) { let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var int = UInt64() Scanner(string: hex).scanHexInt64(&int) let alpha, red, green, blue: UInt64 switch hex.count { case 3: (alpha, red, green, blue) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0.. 2024. 7. 19.
[Swift] 고차함수 (map, filter, reduce, compactMap, flatMap) 고차함수 (Higher-order Function)Swift에서 고차함수(Higher-Order Function)는 다른 함수를 인자로 받거나 함수를 반환하는 함수입니다. 이러한 함수는 코드의 재사용성을 높이고, 함수형 프로그래밍 스타일을 사용할 수 있게 해줍니다1. mapmap 함수는 배열의 각 요소에 동일한 연산을 적용하여 새로운 배열을 반환합니다.let numbers = [1, 2, 3, 4, 5]let squaredNumbers = numbers.map { $0 * $0 }print(squaredNumbers) // [1, 4, 9, 16, 25] 2. filterfilter 함수는 배열의 요소 중 주어진 조건을 만족하는 요소들만을 포함하는 새로운 배열을 반환합니다.let numbers = [1,.. 2024. 7. 5.
[Swift] 타입에러 경고 Cast from 'JSON?' to unrelated type ' ' always fails 해당 경고는 Swift에서 JSON? 타입을 다른 타입(예: [[String: Any]] 또는 Data)으로 캐스팅하려고 할 때 발생합니다.경고가 뜨는 이유는 Swift의 타입 시스템에서 JSON 타입이 예상하는 타입과 호환되지 않기 때문입니다.해결하기 위해서는 JSON 타입을 적절하게 처리하고, 이를 원하는 타입으로 변환해야 합니다.if let res = res { let data = try res.rawData() // JSON 데이터를 Data로 변환 let terms = try JSONDecoder().decode([DTO].self, from: data) // Data를 [DTO]로 디코딩 .. 2024. 7. 4.
728x90
반응형