Xcode 16 릴리스 노트를 보다가...새롭게 알게 된 내용이 있어서 간단히 정리!! # Typed throws그냥 한마디로enum MyError: Error { case invalid}func foo() ➡️throws(MyError)⬅️ -> String { ... }이런식으로 throws할 때 에러 타입을 지정할 수 있게 되는 것 같다. 위 foo메소드는 String을 리턴하거나, 오직 MyError타입의 에러만 throw할 수 있다. enum OtherError: Error { case 저쩌구} func foo() throws(MyError) -> String { do { try ~~~~~~ } catch { throw OtherErr..
Concurrency는 뭔가 아~~하고 나서 또 안보면 까먹는 그런 친구같네.. 간단한게만 살펴보자~~ # Task 비동기 작업 단위 (A unit of asynchronous work) 모든 비동기(asynchronous) 코드는 어떠한 Task의 일부로 실행된다. # Structured Concurrency / Unstructured Concurrency 우선 결론!! 이미지로 간단하게 보자면 아래와 같다. # Structured Concurrency(구조화된 동시성) [Swift에서 Structured Task를 만드는 방법] 1. async let ➡️ 내부적으로 Child Task 생성 2. TaskGroup ➡️ 명시적으로 Child Task를 추가할 수 있음 [Structured Task? ..
# 용어 정리 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 { ... } 이렇..
- 스위프트
- swift tutorial
- Accessibility
- FLUTTER
- 피아노
- swift3
- swift array
- swift sort
- swift 공부
- WWDC
- UIBezierPath
- WKWebView
- iOS delegate
- github
- Swift
- Xcode
- ios 13
- Combine
- np-complete
- Git
- swift delegate
- actor
- IOS
- SwiftUI
- fastlane
- WidgetKit
- 스위프트 문법
- np-hard
- 제이슨 파싱
- 회고
- Total
- Today
- Yesterday