Skip to content

Commit

Permalink
Merge pull request #45 from narumij/work/read
Browse files Browse the repository at this point in the history
CommonProblemsの修正
  • Loading branch information
stzn authored Aug 18, 2024
2 parents 1a4dbd3 + b4f18d8 commit 0ad1799
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions Guide.docc/CommonProblems.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ var supportedStyleCount: Int {
}
```

もしこの変数を保護するための同期機構があり、それがコンパイラに見えない場合は、`nonisolated(unsafe)` を使って `supportedStyleCount` のすべての隔離確認を無効化できます
もし、この変数を保護するための同期が、コンパイラからは見えない形で行われている場合、`nonisolated(unsafe)` を使って `supportedStyleCount` の隔離確認をすべて無効化できます

```swift
/// `styleLock` を保持している間だけこの値にアクセスしてよい。
Expand Down Expand Up @@ -370,7 +370,6 @@ func updateStyle(backgroundColor: ColorComponents) async {
```

`Sendable` への準拠は型の公開APIの取り決めの一部であり、定義するかどうかは自分次第です。
Because `ColorComponents` is marked `public`, it will not implicitly conform to `Sendable`.
`ColorComponents` には `public` がついているため、 `Sendable` への暗黙的な準拠を行ないません。
これは次のようなエラーになります:

Expand Down Expand Up @@ -665,7 +664,7 @@ class WindowStyler {
すべての `Sendable` なプロパティはこの `init` メソッドのなかで依然として安全にアクセスできます。
また、 非 `Sendable` なプロパティは初期化できないもののデフォルト式を使えば初期化できます。

### 非隔離のデイニシャライゼーション
### デイニシャライゼーションは非隔離

アクター隔離を持つ型であっても、デイニシャライザは _常に_ 非隔離です。

Expand All @@ -675,7 +674,7 @@ actor BackgroundStyler {
private let store = StyleStore()

deinit {
// ここは非隔離
// これは非隔離
store.stopNotifications()
}
}
Expand All @@ -693,7 +692,7 @@ error: call to actor-isolated instance method 'stopNotifications()' in a synchro
9 | }
```

この型がアクターであるために意外に感じるかもしれませんが、これは新しい制約ではありません
この型がアクターであるため意外に感じられるかもしれませんが、これは新しい制約になっていません
デイニシャライザを実行するスレッドが過去に保証されたことはなく、Swiftのデータ隔離が今その事実を表面化させただけです。

多くの場合、 `deinit` 内で行なわれる作業が同期的である必要はありません。
Expand All @@ -706,7 +705,7 @@ actor BackgroundStyler {
private let store = StyleStore()

deinit {
// ここはアクター隔離されていないのでタスクが引き継ぐものはない
// ここにアクター隔離はないので、タスクに引き継がれる隔離コンテキストもない
Task { [store] in
await store.stopNotifications()
}
Expand Down

0 comments on commit 0ad1799

Please sign in to comment.