【iOS】Swift6対応方法!Strict Concurrency Checking(厳密な並行性チェック)

【iOS】Swift6対応方法!Strict Concurrency Checking(厳密な並行性チェック)

この記事からわかること

  • Swift6対応方法
  • Strict Concurrency Checking(厳密な並行性チェック)
  • 有効にするには?
  • 警告エラー解消方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

公式リファレンス:Swift 6へのアプリの移行 - WWDC24 - ビデオ

公式リファレンス:Migrating to Swift 6

Swift6からコンパイル時に検出できるように

公式リファレンス:Swift 6 アプリで厳密な並行性を採用する

Xcode16からSwift6モードのコンパイラが搭載されるようになりSwift6では厳密に並行性をチェックされるようになります。このチェックにより、「特定の再現手順の確立が容易でない場合もあるためデバッグが困難であったデータ競合の可能性」をコンパイル時に検出することが可能になりました。

Xcode16ではデフォルトではSwift6モードは有効になっていません。そのためXcodeをアップデート後に既存プロジェクトを開いても、新規プロジェクトを立ち上げても今までと変わらずSwift5モードで実行されます。

Swift6モードでのコンパイルエラーをチェックする

いきなりSwift6モードを有効にしてしまうとエラーが発生しビルドが通らなくなってしまうのでまずはコンパイルエラーになる箇所をチェックして、都度コードベースでの修正対応を行ってから有効にする流れをとります。

チェックするには「Build Settings」>「Swift Compiler - Upcoming Features」>「Strict Concurrency Checking(厳密な並行性チェック)」MinimalTargetedCompleteの3つから選択できるようになっているのでTargetedまたはCompleteに指定します。

公式リファレンス:Setting name: SWIFT_STRICT_CONCURRENCY

【iOS】Swift6対応方法!Strict Concurrency Checking(厳密な並行性チェック)

Minimal:デフォルト設定。Swift Concurrencyを利用している箇所かつ明示的にSendableを定義している箇所でのみチェック

Targeted:Swift Concurrencyを利用している箇所でのみチェック

Complete:Swift Concurrencyを利用していない箇所も含めてプロジェクト全体でチェック

これでビルドを行うと例えば以下のような警告が表示されるようになります。


Stored property 'プロパティ名' of 'Sendable'-conforming class 'クラス名' has non-sendable type 'データ型'; this is an error in the Swift 6 language mode
Main actor-isolated class property 'shared' can not be referenced from a nonisolated context; this is an error in the Swift 6 language mode

Swift6モードを有効にする

実際にSwift6モードに変更するには「Build Settings」>「Swift Compiler - Language」>「Swift Language Version」Swift6に設定するだけです。

【iOS】Swift6対応方法!Strict Concurrency Checking(厳密な並行性チェック)

Swift6に設定するとStrict Concurrency CheckingCompleteに設定され、警告ではなくコンパイルエラーに変わりビルドができなくなります。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index