본문 바로가기

분류 전체보기

(61)
[wwdc] Design protocol interfaces in Swift https://developer.apple.com/videos/play/wwdc2022/110353 Design protocol interfaces in Swift - WWDC22 - Videos - Apple DeveloperLearn how you can use Swift 5.7 to design advanced abstractions using protocols. We'll show you how to use existential types, explore how...developer.apple.comSwift에서 프로토콜의 설계를 진행하다보면 여러가지의 추상화 타입을 만들게 되고 이를 기반으로 끝없이 타입을 추론해가며 개발이된적이 있다 그리고 여러가지 이유로 개발을 진행할때 많은 부분들의 추상화를..
WWDC 2019 Binary Frameworks in Swift 보호되어 있는 글입니다.
Actor 공부하기 지난번 WWDC를 통해 Actor에 대해 알아보았는데 영상만 봐서는 이해를 했다? 의 느낌은 부족하여 문서를 더 읽어보고 하나씩 테스트 해보면서 공부를 하려고한다. https://github.com/swiftlang/swift-evolution/blob/main/proposals/0306-actors.md#interleaving-execution-with-reentrant-actors swift-evolution/proposals/0306-actors.md at main · swiftlang/swift-evolutionThis maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - s..
WWDC2021 Protect mutable state with Swift actors Swift Actor를 이용한 데이터레이스를 방지해보자 class Counter { var value = 0 func increment() -> Int { value = value + 1 return value }}let counter = Counter()Task.detached { print(counter.increment()) // data race}Task.detached { print(counter.increment()) // data race} 위의 상황에서 개발자는 자연스럽게 데이터레이스 현상을 겪게된다 Task.detached를 통해 서로 다른 스레드에서 하나의 클래스의 내부변수를 바꾸려는 시도가 생김 위의 동작에서 아래의 함수가 동시에 실..
WWDC 2021 Meet AsyncSequence 정리 어제 시청중이던 WWDC영상의 마지막에 Meet AsyncSequence에 대한 이야기가 나와 다음날 바로 정리하는게 좋겠다 생각이 들어빠르게 정리해본다. @mainstruct QuakesTool { static func main() async throws { let endpointURL = URL(string: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv")! //비동기 처리를 순차적으로 처리해주는 지난번 글에 정리한 for try await 구문 for try await event in endpointURL.lines.dropFirst() { let va..
WWDC 2021 Explore structured concurrency in Swift 정리 WWDC 정리글 2차 어제 async await 영상을 정리했는데 관련 영상인 Swift의 구조화된 동시성 영상도 여유가 있을때 미리 정리해두려고한다. 프로그래밍은 시간이 지나면서 위에서 아래로 코드를 읽는 형태로 발전해나갔고 구조화잘되있고 정리가 잘 된 위 -> 아래 코드블럭은 개발자의 가독성이 높아진다. func fetchThumbnails( for ids: [String], completion handler: @escaping ([String: UIImage]?, Error?) -> Void) { guard let id = ids.first else { return handler([:], nil) } let request = thumbnailURLRequest(for: id) ..
WWDC 공부 정리 1차 Meet async/await in Swift WWDC를 하나씩 정리해야할 필요성을 느끼게 되고 현재 재직중인 회사에서 네트워크 계층을 리팩토링하는 과정중기존의 비동기코드의 completion Block을 async/await 새롭게 리팩토링하게되었고 async/await에 대한 지식이 필요하고 기존에는async/await는 completion Block을 간단하게 쓸려고 async/await 아니야? 정도만 알고있던 지식의 견문을 넓히기 위해 나 자신을 위해 블로그글을 작성합니다.  Swift async/await가 탄생한 배경 completion Block / clouser의 코드는 너무 복잡하고 개발자들을 힘들게 하였고 이를 문제삼아 async/await가 탄생되었다.그리고 completion Block / clouser 보다 더 안전하게 개발..
내부 DB 종류와 간단한 정리 Swift 에서 사용하는 내부 DB 대표적인 3가지를 정리해본다  1. 사용해본적은 없지만 옛날에 백앤드를 잠깐 공부했을때 들어본 SQLite DBMS SQLite는 C 언어로 구현되어 있습니다. 이는 다음과 같은 특징을 가지고 있습니다:경량화: 크기가 작고 메모리 사용이 적습니다.서버 없음: 클라이언트/서버 아키텍처가 없어서 앱 내에서 직접 사용됩니다.자체 포함형: 데이터베이스 파일 하나에 모든 데이터가 저장됩니다.트랜잭션 지원: ACID 특성(원자성, 일관성, 고립성, 지속성)을 지원합니다.크로스 플랫폼: iOS 뿐만 아니라 Android, Windows 등 다양한 플랫폼에서도 사용 가능합니다.ACID의 각 특성원자성 (Atomicity):트랜잭션의 원자성은 "전체 또는 아무것도"라는 의미입니다. 즉..