Swift Concurrency チートシート

Updated
Aug 29, 2022 4:59 AM
Created
Aug 29, 2022 4:58 AM
Tags
SwiftMemoBookmark
Attributes
Swift Concurrency チートシート

Swift 5.5 で Swift に Concurrency (並行処理)関連の言語機能が追加されました。これによって、 Swift で 非同期処理・並行処理のコードをより簡潔かつ安全に 書くことができるようになります。 しかし、 Swift Concurrency は Structured Concurrency や Actor など、多くの人にとって馴染みが薄いだろうと思われる概念を含みます。具体例を通して効率よく Swift Concurrency を習得できるように、本記事では iOS アプリを題材に、 Swift Concurrency 導入以前( Before )と導入後( After )のコードを比較することで、何がどのように変わるのかを紹介します。 なお、 Swift Concurrency 関連の機能は次の三つに大別できるため、本記事の Before & After の例もそのように分類します。 本記事は iOSDC Japan 2021 のセッション "async/awaitやactorでiOSアプリ開発がどう変わるか Before&Afterの具体例で学ぶ" をベースにテキスト化したものです。 本記事の説明は前から読んで理解できるように書かれていますが、チートシートとしてやりたいことベースでコードの書き方を調べることもできます。そのような場合には目次をご活用下さい。 非同期処理はエラーハンドリングを必要とする場合が多いですが、まずは理解しやすいようにエラーハンドリングを伴わない例を考えてみます。

Swift Concurrency チートシート

Highlights

💡
Actor Context がクロージャに引き継がれるかどうかは、そのクロージャが @Sendable であるかによって決定されます。 @Sendable でない場合は引き継がれ、 @Sendable の場合は引き継がれません。

💡
Task.init に渡すクロージャには @Sendable が付与されています。前述のルールに従えば Actor Context を引き継がないはずです。しかし、 Task.init に渡すクロージャは例外的に Actor Context を引き継ぎます。これは、 @_inheritActorContext が付与されることによって実現されています。

Recently updated notes

📖
Notes

NameTagsUpdated
just happened
SwiftUI.frameworkSwift
Sep 22, 2022 6:13 PM
Rendering ascii utils
Swift
Sep 22, 2022 8:45 AM
SwiftUI EnvironmentValues - SwiftUI.PropertyList
SwiftSwiftUI.framework
Sep 22, 2022 10:13 AM
Regex example
Sep 21, 2022 1:27 PM
SwiftUI animation - Structural Identity
SwiftSwiftUI.framework
Sep 16, 2022 12:39 PM
Verge v9 migration note
Sep 15, 2022 3:49 AM
Merging Blob, Metaball
Sep 14, 2022 12:28 PM
SwiftUI Testing
Sep 12, 2022 6:33 PM
Swipe up or down prototyping
SwiftSwiftUI.framework
Sep 10, 2022 9:51 AM
Pick an emoji at random
SwiftMemoDevelopmentSwiftScripting
Sep 10, 2022 7:00 AM
flex-wrap in SwiftUI with Layout API
SwiftSwiftUI.framework
Sep 9, 2022 4:11 PM
SwiftUI backports
SwiftSwiftUI.framework
Sep 9, 2022 4:03 PM
Making Slides in SwiftUI
Swift
Sep 8, 2022 6:35 PM
CORS on Firebase
Sep 5, 2022 8:48 AM
swift-async-shell
SwiftBookmark
Sep 4, 2022 12:34 PM
Furniture shops
Bookmark
Sep 4, 2022 11:06 AM
New StateReader syntax
VergeGroup/VergeSwift
Sep 3, 2022 8:07 PM
Swift snippets for scripting
SwiftSwiftScripting
Sep 4, 2022 12:35 PM
Mixpanel note
mixpanel
Sep 2, 2022 3:23 PM
[scrapbook] Trampoline implementation EventEmitter - Verge
Swift
Sep 1, 2022 3:45 PM
apple/swift-book
SwiftBookmark
Aug 31, 2022 4:50 PM
Swift Concurrency チートシート
SwiftMemoBookmark
Aug 29, 2022 4:59 AM
Check if it is in Task
SwiftConcurrency
Aug 27, 2022 6:11 AM
Behaviors actor annotated type - Swift Concurrency
SwiftConcurrency
Aug 26, 2022 5:23 PM
Syntax Design in Swift
Swift
Aug 25, 2022 12:41 PM
[Syntax Design] .background(.blue)
SwiftSyntaxDesign
Aug 25, 2022 12:41 PM
WidgetKit note
iOSSwift
Sep 15, 2022 1:58 PM
ActivityKit note
iOSSwift
Sep 15, 2022 3:13 PM
Hides warnings coming from calling main actor isolated things
SwiftConcurrency
Aug 25, 2022 1:32 PM
Coffee Grinder - VARIA VS3 GRINDER
Coffee
Aug 29, 2022 6:14 AM
Logger template for iOS12+
Swift
Sep 13, 2022 12:35 PM
Like UIScrollView, how to get "rubber banding effect"
Sep 15, 2022 5:43 AM
🛠️
Valuable iOS development resources
UIKit.frameworkSwiftSwiftUI.frameworkObjective-CCocoaiOS
Aug 29, 2022 5:53 AM