# 용어 정리 String literals - 소스의 문자 시퀀스(sequence of characters) String delimiters - 문자 시퀀스(sequence of characters)의 시작과 끝에서 경계를 설정. Swift의 string delimiter는 "(큰따옴표) Escape characters - String literals내에서 하나 이상의 후속 Character를 특별하게 해석한다. Swift의 Escape character는 \(백슬래시) Escape character sequences(== Escape sequence) - 특수한 문자를 나타내며, Escape characters(\)로 시작하게 된다. Escape sequence는 다음과 같은것들이 있다. 1. Stri..
Xcode 14.2로 올리고 Actor관련 warning 3종류를 보게 되었다. Swift 5.7에 대한 변경사항때문인지는 확실하지는 않지만;; 일단 그런것으로 생각하기로함 일단 내가 파악해본것을 써보려고 한다. 1. Actor-isolated instance method 'testMethod()' can not be referenced from a non-isolated context; this is an error in Swift 6 2. Actor-isolated property 'name' can not be mutated from a non-isolated context; this is an error in Swift 6 3. Cannot access property 'disposeBag' he..

안녕하세요 :) Zedd입니다. Swift 5.7에 추가된 Opaque Parameter Declarations을 보기 전에.. Opaque Type이 어떤건지!!! Opaque Type은 Swift 5.1에 추가되었습니다. Opaque Type을 직역하면 불분명한 타입 정도가 되겠네요. 불투명 타입이라고 부르는 사람도 있는데, 저는 불분명한 타입! 요게 더 와닿는것 같아서 ㅎ # Generic (갑자기) 우리에게 익숙한 Generic을 보겠습니다. struct Stack { var items: [Element] = [] mutating func push(_ item: Element) { items.append(item) } mutating func pop() -> Element { return item..
안녕하세요 :) Zedd입니다. Swift 5.7 이어서~~~ 다음과 같은 간단한 Generic 메소드를 봅시다. func compute(_ values: C) -> Int { return values.count } Collection protocol을 conform하고있는 generic parameter를 받도록 되어있습니다. func compute(_ values: C) -> Int { return values.count } compute([1, 2, 3]) // 3 compute(["Zedd": "안녕"]) // 1 그래서 Array나 Dictionary같은 Collection 들을 넣을 수 있게 됩니다. # default value expression with a generic parameter ..
안녕하세요 :) Zedd입니다. Swift 5.7에서 추가된 기능인 Multi-statement closure type inference를 살펴볼게요! # Swift 5.7 이전 간단한 closure를 살펴봅시다. let results = ["Zedd", "", "Walker", ""].map { _ in return true } 이럴 때는 closure내부에 리턴타입을 명시하지 않아도 됩니다. 이정도는 Swift가 추론할 수 있기 때문...이겠죠? 다만, let results = ["Zedd", "", "Walker", ""].map { value in if value.isEmpty { return false } return true } 이런 if나 do-catch같은 statement가 closure..
안녕하세요 :) Zedd입니다. Swift 5.7 변경사항 중 하나인 if let shorthand를 보려고 합니다. if let foo = foo { .. } 를 사용하여 기존 optional variable를 "숨기는" optional binding은 굉장히 일반적인 패턴인데요. if let foo = foo 같이 식별자를 두번 써줘야해서 let someLengthyVariableName: Foo? = ... let anotherImportantVariable: Bar? = ... if let someLengthyVariableName = someLengthyVariableName, let anotherImportantVariable = anotherImportantVariable { ... } 이렇..

안녕하세요 :) Zedd입니다. 코로롱🦠에 걸려서 이래저래 굉장히 힘드네요 🥲 진짜 안걸리는게 제일 좋다~~!!!! 조심~~!!! 오늘은 Swift 5.6에서 추가된 Introduces existential any 요 기능만 호다닥 보려고 합니다. 먼저, Existential type를 알아야 합니다. # Existential type 직역하여 "실존 타입"정도로..이해하면 될 것 같아요. 우와 새로운 개념 ㄷㄷ;;;;이 아니라 Existential type은 그냥 용어일 뿐, 우리가 계속 써왔던 개념입니다. protocol Pet { var name: String { get } } struct Cat: Pet { var name: String } Pet이라는 프로토콜이 있고, Pet을 준수하는 Cat이..

안녕하세요 :) Zedd입니다. 오늘은 AsyncStream에 대해서 공부해보려고 합니다 :D 오늘 공부할 AsyncStream은 반드시 AsyncSequence를 알아야 이해가 가능합니다. # AsyncStream ✔️ 정의 : 순서가 있고, 비동기적으로 생성된 요소들의 sequence ✔️ 정의도 한번에 와닿지 않고, AsyncStream에 대한 이런 저런 이야기가 많지만 딱 하나만 기억하면 됩니다. 📝 AsyncSequence를 생성하는 인터페이스!!!!!! 📝 그래서 AsyncSequence를 알아야 이해가 가능하다고 말한거였어요 정말 간단한 예를 들어봅시다. 비동기랑은 상관없지만;; 1부터 10까지의 요소가 있는 AsyncSequence를 생성하고 싶다고 칩시다. 물론 Swift Concurre..
- Total
- 4,487,812
- Today
- 109
- Yesterday
- 2,394