[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

분류 전체보기 495

[Swift][문서의역] Task

참고 및 출처 https://developer.apple.com/documentation/swift/task/ https://www.avanderlee.com/concurrency/tasks/ Task & TaskGroup Task 인스턴스를 생성할 때 해당 Task가 수행할 작업을 포함하는 클로저를 함께 제공하게 됩니다. Task는 생성 직후 실행을 시작할 수 있습니다. 명시적으로 시작하거나 예약하지 않아도 됩니다. Task를 만들면 해당 인스턴스를 사용하여 작업과 상호작용합니다. 예를 들어 Task의 작업이 완료될 때까지 기다리거나 취소할 수 있습니다. Task의 작업이 완료될 때까지 기다리거나 취소할 때까지 기다리지 않고 Task에 대한 참조를 버리는 것은 프로그래밍적 에러가 아닙니다. Task는..

[Swift][문서의역] Concurrency (async & await)

참고 및 출처 https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html Concurrency Swift는 구조적 방식으로 비동기(asynchronous) 및 병렬(parallel) 코드 작성을 지원했습니다. 비동기 코드는 한번에 프로그램의 한 부분만 처리되지만 정지 및 재실행이 가능합니다. 네트워크에서 데이터를 가져오거나 파일을 읽어오는 등의 긴 기간의 연산을 하는 동안 UI를 갱신하는 등의 비교적 단기간의 연산을 수행할 수 있습니다. 병렬 코드는 여러개의 코드들을 동시에 실행할 수 있습니다. 예를 들어 4개의 코어를 가진 프로세서는 각 코어마다 하나의 코드를 배치하여 동시에 4개의 코드를 실행할 수 있는 것입니다. 병렬 및 비동기 코드는 유연하..

[Swift] Generic

Swift - Generic Generic을 사용하면 좀 더 유연하게 Funtion 및 Type을 작성할 수 있습니다. 중복을 피하고 그 의도를 추상적인 방식으로 표현하는 코드를 작성합니다. 아래와 같은 방식으로 사용합니다. func swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } 이름은 자유롭게 지정할 수 있습니다. 일반적으로는 T,U,V와 같은 단일 문자를 많이 사용합니다. Generic 뒤에 단일 클래스 혹은 프로토콜을 배치하여 Generic의 타입을 제한할 수도 있습니다. func someFunction(someT: T, someU: U) { // function body goes here }..

🍎 Apple/Swift 2022.03.07

[Swift] NotificationCenter

NotificationCenter NotificationCenter는 등록된 Observer에게 정보를 broadcast해주는 역할을 수행합니다. addObserver(_:selector:name:object:) 혹은 addObserver(forName:object:queue:using:) 메서드를 통해 알림(NSNotification 객체)을 받을 객체를 등록할 수 있습니다. 이 때 어떤 알림을 받아야하는지도 지정합니다. 따라서 하나의 객체에 이 메서드를 여러번 호출하는 것으로 여러 알림에 대한 Observer 역할을 하나의 객체가 동시에 수행하도록 할 수 있습니다. 실행중인 각 앱마다 default notification center가 존재하며, 필요할 경우 새로운 notification center..

🍎 Apple/Swift 2022.03.07

[Swift] KVC(Key-Value Coding), KVO(Key-Value Observing)

KVC(Key-Value Coding) KVC(Key-Value Coding)이란, Key 혹은 KeyPath를 통해 간접적으로 데이터를 가져오거나 수정하는 방법입니다. Key는 String이며 일반적으로 객체 내에 정의된 method, property의 이름이 됩니다. 또한 아스키로 인코딩이 가능하며 소문자로 시작, 공백이 없어야합니다. struct Address { var town: String } struct Person { var address: Address } let seoul = Address(town: "건대입구역") let inu = Person(address: seoul) let inuAddress = inu[keyPath: \.address] let inuTown = inu[keyPa..

🍎 Apple/Swift 2022.03.01

[Swift] Monad

ContextSwift의 Monad에 대해 이해하기 위해서는 먼저 Context와 Content의 관계에 대해 이해해야 합니다. Content는 Context에 들어갈 수 있는 '어떤 것'이며, Context는 Content를 보관할 수 있는 '어떤 것'입니다. 상당히 포괄적인 개념이기에 저 그림에 보여지는 관계정도만 이해해도 충분합니다. 어쨌든 핵심은 Context에 무언가를 담을 수 있다는 것이죠.Collection들은 Context입니다. 내부에 인자들을 담을 수 있기 때문입니다.Optional 또한 Context입니다. 내부에 값을 보유할 수 있기 때문입니다.Functor다음으로 알아야하는 것은 Functor입니다. Functor는 고차함수 map을 적용할 수 있는 모든 컨테이너 타입을 의미합니다..

🍎 Apple/Swift 2022.03.01

[RxSwift] Relay (PublishRelay, BehaviorRelay, ReplayRelay)

안녕하세요 이누입니다. 오늘은 Relay입니다! RxSwift - Relay Relay는 RxSwfit가 아니라 RxCocoa에 속하는 개념입니다. 그 종류에는 PublishRelay, BehaviorRelay, ReplayRelay가 있습니다. Subject는 .completed, .error의 이벤트가 발생하면 subscribe가 종료되는 반면, Relay는 .completed, .error를 발생하지 않고 Dispose되기 전까지 계속 작동하기 때문에 UI Event에서 사용하기 적절합니다. Subject를 Wrapping하는 형태로 구성되어 있습니다. 요약) UI에 사용하기 좋은 Subject의 변형. 내부에 Subject 들고 있음. PublishRelay /// PublishRelay is a..

[알고리즘 연습] 메뉴 리뉴얼 (프로그래머스 lv2, 스위프트)

문제 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이 import Foundation func solution(_ orders:[String], _ course:[Int]) -> [String] { var result = [String]() for n in course { var temp = [String:Int]() var check = true orders.forEach { order in combin..

[Swift] Property Wrapper

Property Wrapper Property Wrapper는 반복적으로 필요로하는 property 구현 패턴(getter,setter)에 대한 집합을 컴파일러에 하드코딩해놓고, 이를 라이브러리로 정의할 수 있는 일반적인 메커니즘을 제공하는 기능입니다. Property wrapper는 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티를 정의하는 코드 사이에 새로운 분리 계층을 추가합니다. 개발을 진행하다보면 Thread-safe한 프로퍼티 또는 값을 DB에 저장하는 프로퍼티가 여러개 필요한 경우가 있을 것입니다. 이를 위해서는 각각의 프로퍼티 모두에 해당 처리들을 위한 코드를 작성해야 했습니다. Property wrapper를 사용하게되면 이런 값 저장을 관리하는 코드들을 Property wrapper..

🍎 Apple/Swift 2022.02.24

[RxSwift] Driver, Signal

이번엔 RxCocoa의 Driver와 Signal에 대해 알아보아요. RxCocoa Trait? Driver와 Singal 모두 UI 요소를 위한 기능이지만 Single, Completable, Maybe와 마찬가지로 Observable을 wrapping하여 구성되기 때문에 RxCocoa의 Trait이라고 볼 수 있습니다. 참고 : Trait 포스팅 Driver Driver는 UILayer에서 반응형 작업을 좀 더 직관적으로 사용할 수 있도록 제공되는 개념입니다. Observable은 상황에 따라 BackgroundScheduler를 명확히 지정해주어야하지만, Driver는 MainScheduler로 지정되어 있습니다. UI 관련적용에는 따로 Scheduler를 지정해줄 필요없이 Driver를 사용하여 ..

반응형