일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SWIFT
- 티스토리챌린지
- ios
- 야곰 # 야곰아카데미커리어스타터캠프 #iOS개발자 # 부트캠프
- WWDC
- modern concurrency deep dive
- APNS
- 오블완
- modern concurrency
- Today
- Total
목록티스토리챌린지 (21)
Geon
Cancelvar task = Task { let continue = try await longTask() print(continue)}sleep(1)task.cancel()- 비동기 동작중, 취소를 콜하면 에러를 던진다.- yield 는 양보한다는 뜻 (중단 포인트를 만들어 준다)
Task- 비동기의 단위이다.- 내부에 self를 참조하고 있을때 기존의 DispatchQueue와 다르게 자동으로 self를 해제해준다.(Task closure lifetime)- 즉 캡쳐를 해도 상관은없으나, 필요한 사항이 아니면 할필요가 없다. final class Mock { var image: UIImage? func someFunction() asnyc -> UIImage? { Task { Task.sleep(5) image = UIImage() // self 선언 안해줘도 된다. } }} 출저: https://developer.apple.com/documentation/swift/task#Task-closure-lifetime
Macro tests- test를 통해 매크로의 에러 여부를 파악할수 있다.let testMacros: [String: Macro.Type] = [ "SlopeSubset" : SlopeSubsetMacro.self,]final class WWDCTests: XCTestCase { func testSlopeSubset() { assertMacroExpansion( """ @SlopeSubset enum EasySlope { case beginnersParadise case practiceRun } """, ex..
Swift MacrosSwift 매크로를 사용하면 컴파일 타임에 반복적인 코드를 생성하여 앱의 코드베이스를 더욱 표현적이고 읽기 쉽게 만들수 있다.public struct StringifyMacro: ExpressionMacro { public static func expansion( of node: some FreestandingMacroExpansionSyntax, in context: some MacroExpansionContext ) -> ExprSyntax { guard let argument = node.argumentList.first?.expression else { fatalError("compiler bug: the m..

Swift5.9 부터 좀더 쉽게 Observation을 할 수 있다.@Property Wrapper를 3가지로 단순화하여, 고려해야할 옵션이 적어지기에 새로운 기능을 작성하는데 더 쉽게 추론할수 있기에 도입되었다.@Observable 매크로를 사용하면 성능상의 이득이 있다.@EnvironmentObject 는 없어지고 @Environment로 대체되었다.@Binding 대신 Bindable로 변경되었다.@ObservableObject 대신 추적해야할 변수에 @Observable로 표기, view에서는 var로 변경가능위 사진은 언제 어떤 프로퍼티 래퍼를 써야할지에 대한 표기 @Observable Macro를 사용했을때의 예시 코드@Observable class Donut { var name: Strin..

SwiftUI 렌더링 과정꼭 필요한경우에만 업데이트 해야한다.종속성을 줄여야한다.Self.printChanges() 를 통해 View가 무엇때문에 변경되는지 확인가능SwiftUI 렌더 과정View ValueDynamic property updateUpdated View Value종속성 줄여야하는 이유 (1)종속성 줄여야하는 이유 (2) view에 새로운 값 생성- 저장된 모든 프로퍼티에 값을 할당(dogs, 동적 프로퍼티등)SwiftUI는 View의 동적 프로퍼티를 모두 업데이트 해 동적 프로퍼티의 값을 그래프에 있는 값으로 바꿈업데이트 한값을 이용해 body가 실행되며 View의 자식을 생성한다.이 과정을 반복하며 View가 업데이트 된다. 모든 View가 업데이트 되는것이 아닌 값이 새로 바뀌거나 종..