XCode 14.3 日本語化計画:New Human Interface Guideline
値をコピーすることで同時実行ドメイン間で安全に渡すことができる型。
protocol Sendable
Sendable な型の値を、ある同時実行ドメインから別のものに安全に渡すことができます。たとえば、actor のメソッドを呼び出すときに、sendable な値を引数として渡すことができます。以下のすべてを sendable としてマークできます。
このプロトコルには必須のメソッドやプロパティはありませんが、コンパイル時に強制されるセマンティック(意味的)要件があります。これらの要件は、以下のセクションにリストされています。Sendable への準拠は、型の宣言と同じファイルで宣言しなければなりません。
コンパイラを全く強制せずに Sendable への準拠を宣言するには、@unchecked Sendable と記述して下さい。たとえば、その状態へのすべてのアクセスをロックやキューで保護するなど、チェックされていない sendable (送信可能) な型の正確性に対してあなたが責任を負います。Sendable への準拠性をチェックしないと、準拠性が同じファイル内になければならないというルールの適用も無効になります。
Task が含まれる言語レベルの同時実行モデルの詳細については、Swift プログラミング言語 の 同時実行 を参照してください。
Sendable プロトコルの要件を満たすには、列挙型または構造体には sendable なメンバーと関連値のみが含まれていなければなりません。場合によっては、要件を満たす構造体と列挙型が暗黙的に Sendable に準拠します。
それ以外の場合は、Sendable への準拠を明示的に宣言する必要があります。
送信不可能な格納プロパティを持つ構造体と送信不可能な関連値を持つ列挙型は、Sendable プロトコルの意味的要件を満たしていることを手動で確認した後、@unchecked Sendable としてマークされ、コンパイル時の正確性チェックを無効にすることができます。
アクターは、その可変状態へのすべてのアクセスが順番に実行されることを保証するため、すべてのアクター型は暗黙的に Sendable に準拠します。
Sendable なプロトコルの要件を満たすには、クラスは以下のことを行わなければなりません。
@MainActor でマークされたクラスは、メインアクターがその状態へのすべてのアクセスを調整するため、暗黙的に sendable です。これらのクラスは、変更可能で送信不可能な格納されたプロパティを持てます。
上記の要件を満たさないクラスは、Sendable プロトコルの意味的要件を満たしていることを手動で確認した後、@unchecked Sendable としてマークされ、コンパイル時の正確性チェックを無効にすることができます。
Sendable プロトコルに準拠する代わりに、sendable な関数とクロージャを @Sendable 属性でマークして下さい。関数またはクロージャがキャプチャする値はすべて sendable でなければなりません。さらに、sendable なクロージャは値によるキャプチャのみを使用しなければならず、キャプチャされた値は sendable な型でなければなりません。
sendable なクロージャを期待するコンテキストでは、要件を満たすクロージャは暗黙的に Sendable に準拠します (たとえば、Task.detached(priority:operation:) への呼び出しで)。
型注釈の一部として @Sendable を記述するか、クロージャのパラメータの前に @Sendable を記述することにより、クロージャを sendable として明示的にマークできます。たとえば以下のようになります。
Sendable プロトコルの要件を満たすには、タプルのすべての要素が sendable でなければなりません。要件を満たすタプルは暗黙的に Sendable に準拠します。
Int.Type などのメタタイプは暗黙的に Sendable プロトコルに準拠します。
Actor
AnyActor
Clock
DistributedActor
DistributedActorSystem
DistributedActorSystemError
DurationProtocol
Error
Executor
InstantProtocol
SerialExecutor
UnsafeSendable
Element が Sendable に準拠する場合に準拠します。
ArraySlice
Element が Sendable に準拠する場合に準拠します。
AsyncCompactMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し,ElementOfResult が Sendable に準拠し,Base.Element が Sendable に準拠する場合に準拠します。
AsyncCompactMapSequence.Iterator
Base が AsyncSequence に準拠し、ElementOfResult が Sendable に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncDropFirstSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncDropFirstSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncDropWhileSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncDropWhileSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncFilterSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncFilterSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncFlatMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、SegmentOfResult が Sendable に準拠し、SegmentOfResult が AsyncSequence に準拠し、Base.Element が Sendable に準拠し、また SegmentOfResult.Element が Sendable に準拠する場合に準拠します。
AsyncFlatMapSequence.Iterator
Base が AsyncSequence に準拠し、SegmentOfResult が Sendable に準拠し、SegmentOfResult が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠し、SegmentOfResult.AsyncIterator が Sendable に準拠し、また SegmentOfResult.Element が Sendable に準拠する場合に準拠します。
AsyncMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Transformed が Sendable に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncMapSequence.Iterator
Base が AsyncSequence に準拠し、Transformed が Sendable に準拠し、Base.AsyncIterator が Sendable に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncPrefixSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncPrefixSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncPrefixWhileSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncPrefixWhileSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncStream
Element が Sendable に準拠する場合に準拠します。
AsyncStream.Continuation
AsyncThrowingCompactMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingCompactMapSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingDropWhileSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingDropWhileSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingFilterSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingFilterSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingFlatMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、SegmentOfResult が Sendable に準拠し、SegmentOfResult が AsyncSequence に準拠し、Base.Element が Sendable に準拠し、また SegmentOfResult.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingFlatMapSequence.Iterator
Base が AsyncSequence に準拠し、SegmentOfResult が Sendable に準拠し、SegmentOfResult が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠し、SegmentOfResult.AsyncIterator が Sendable に準拠し、また SegmentOfResult.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingMapSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Transformed が Sendable に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingMapSequence.Iterator
Base が AsyncSequence に準拠し、Transformed が Sendable に準拠し、Base.AsyncIterator が Sendable に準拠し、また Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingPrefixWhileSequence
Base が Sendable に準拠し、Base が AsyncSequence に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingPrefixWhileSequence.Iterator
Base が AsyncSequence に準拠し、Base.AsyncIterator が Sendable に準拠し、Base.Element が Sendable に準拠する場合に準拠します。
AsyncThrowingStream
Element が Sendable に準拠し、Failure が Error に準拠する場合に準拠します。
AsyncThrowingStream.Continuation
AutoreleasingUnsafeMutablePointer
CVaListPointer
CancellationError
CheckedContinuation
ClosedRange
Bound が Comparable および Sendable に準拠する場合に準拠します。
ClosedRange.Index
Bound が Sendable に準拠し、Bound が Strideable に準拠し、また Bound.Stride が SignedInteger に準拠する場合に準拠します。
CollectionDifference
ChangeElement が Sendable に準拠する場合に準拠します。
CollectionDifference.Change
ChangeElement が Sendable に準拠する場合に準拠します。
CollectionDifference.Index
ChangeElement が Sendable に準拠する場合に準拠します。
CollectionOfOne
Element が Sendable に準拠する場合に準拠します。
CollectionOfOne.Iterator
Element が Sendable に準拠する場合に準拠します。
CommandLine
ContiguousArray
Element が Sendable に準拠する場合に準拠します。
ContinuousClock
ContinuousClock.Instant
DefaultIndices
Elements が Collection に準拠し、Elements が Sendable に準拠し、また Elements.Index が Sendable に準拠する場合に準拠します。
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Dictionary.Keys.Iterator
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
Dictionary.Values.Iterator
Key が Hashable に準拠し、Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
DiscardingTaskGroup
DistributedActorCodingError
Double.SIMD16Storage
Double.SIMD2Storage
Double.SIMD32Storage
Double.SIMD4Storage
Double.SIMD64Storage
Double.SIMD8Storage
Duration
Duration.TimeFormatStyle
Duration.TimeFormatStyle.Attributed
Duration.TimeFormatStyle.Pattern
Duration.UnitsFormatStyle
Duration.UnitsFormatStyle.Attributed
Duration.UnitsFormatStyle.FractionalPartDisplayStrategy
Duration.UnitsFormatStyle.Unit
Duration.UnitsFormatStyle.UnitWidth
Duration.UnitsFormatStyle.ZeroValueUnitsDisplayStrategy
EmptyCollection
EmptyCollection.Iterator
ExecuteDistributedTargetError
ExecutorJob
Float.SIMD16Storage
Float.SIMD2Storage
Float.SIMD32Storage
Float.SIMD4Storage
Float.SIMD64Storage
Float.SIMD8Storage
Float16
Float16.SIMD16Storage
Float16.SIMD2Storage
Float16.SIMD32Storage
Float16.SIMD4Storage
Float16.SIMD64Storage
Float16.SIMD8Storage
IndexingIterator
Elements が Collection に準拠し、Elements が Sendable に準拠し、また Elements.Index が Sendable に準拠する場合に準拠します。
Int.SIMD16Storage
Int.SIMD2Storage
Int.SIMD32Storage
Int.SIMD4Storage
Int.SIMD64Storage
Int.SIMD8Storage
Int.Words
Int16.SIMD16Storage
Int16.SIMD2Storage
Int16.SIMD32Storage
Int16.SIMD4Storage
Int16.SIMD64Storage
Int16.SIMD8Storage
Int16.Words
Int32.SIMD16Storage
Int32.SIMD2Storage
Int32.SIMD32Storage
Int32.SIMD4Storage
Int32.SIMD64Storage
Int32.SIMD8Storage
Int32.Words
Int64.SIMD16Storage
Int64.SIMD2Storage
Int64.SIMD32Storage
Int64.SIMD4Storage
Int64.SIMD64Storage
Int64.SIMD8Storage
Int64.Words
Int8.SIMD16Storage
Int8.SIMD2Storage
Int8.SIMD32Storage
Int8.SIMD4Storage
Int8.SIMD64Storage
Int8.SIMD8Storage
Int8.Words
IteratorSequence
Base が IteratorProtocol および Sendable に準拠する場合に準拠します。
Job
JobPriority
Key が Sendable に準拠し、Value が Sendable に準拠する場合に準拠します。
LocalTestingActorID
LocalTestingDistributedActorSystem
LocalTestingDistributedActorSystemError
MainActor
ManagedBufferPointer
ObjectIdentifier
ObservationRegistrar
Optional
Wrapped が Sendable に準拠する場合に準拠します。
Bound が Comparable および Sendable に準拠する場合に準拠します。
PartialRangeFrom.Iterator
Bound が Sendable に準拠し、Bound が Strideable に準拠し、また Bound.Stride が SignedInteger に準拠する場合に準拠します。
Bound が Comparable および Sendable に準拠する場合に準拠します。
Bound が Comparable および Sendable に準拠する場合に準拠します。
Bound が Comparable および Sendable に準拠する場合に準拠します。
Repeated
Element が Sendable に準拠する場合に準拠します。
Result
Success が Sendable に準拠し、Failure が Error に準拠する場合に準拠します。
SIMD16
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD16Storage が Sendable に準拠する場合に準拠します。
SIMD2
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD2Storage が Sendable に準拠する場合に準拠します。
SIMD3
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD4Storage が Sendable に準拠する場合に準拠します。
SIMD32
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD32Storage が Sendable に準拠する場合に準拠します。
SIMD4
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD4Storage が Sendable に準拠する場合に準拠します。
SIMD64
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD64Storage が Sendable に準拠する場合に準拠します。
SIMD8
Scalar が SIMDScalar に準拠し、Scalar が Sendable に準拠し、また Scalar.SIMD8Storage が Sendable に準拠する場合に準拠します。
Element が Hashable および Sendable に準拠する場合に準拠します。
Element が Hashable および Sendable に準拠する場合に準拠します。
Element が Hashable および Sendable に準拠する場合に準拠します。
Base が Collection に準拠し、Base が Sendable に準拠し、Base.Index が Sendable に準拠する場合に準拠します。
StaticBigInt
StrideThrough
Element が Sendable に準拠し、Element が Strideable に準拠し、また Element.Stride が Sendable に準拠する場合に準拠します。
StrideThroughIterator
Element が Sendable に準拠し、Element が Strideable に準拠し、また Element.Stride が Sendable に準拠する場合に準拠します。
StrideTo
Element が Sendable に準拠し、Element が Strideable に準拠し、また Element.Stride が Sendable に準拠する場合に準拠します。
StrideToIterator
Element が Sendable に準拠し、Element が Strideable に準拠し、また Element.Stride が Sendable に準拠する場合に準拠します。
String.Comparator
String.Index
String.LocalizationOptions
String.LocalizationValue
String.LocalizationValue.Placeholder
String.LocalizationValue.StringInterpolation
String.StandardComparator
String.UTF16View
String.UTF16View.Iterator
String.UTF8View
String.UnicodeScalarView.Iterator
Substring.UTF16View
Substring.UTF8View
Substring.UnicodeScalarView
SuspendingClock
SuspendingClock.Instant
Task
TaskGroup
ChildTaskResult が Sendable に準拠する場合に準拠します。
TaskLocal
TaskPriority
ThrowingDiscardingTaskGroup
Failure が Error に準拠する場合に準拠します。
ThrowingTaskGroup
ChildTaskResult が Sendable に準拠し、Failure が Error に準拠する場合に準拠します。
UInt.SIMD16Storage
UInt.SIMD2Storage
UInt.SIMD32Storage
UInt.SIMD4Storage
UInt.SIMD64Storage
UInt.SIMD8Storage
UInt.Words
UInt16.SIMD16Storage
UInt16.SIMD2Storage
UInt16.SIMD32Storage
UInt16.SIMD4Storage
UInt16.SIMD64Storage
UInt16.SIMD8Storage
UInt16.Words
UInt32.SIMD16Storage
UInt32.SIMD2Storage
UInt32.SIMD32Storage
UInt32.SIMD4Storage
UInt32.SIMD64Storage
UInt32.SIMD8Storage
UInt32.Words
UInt64.SIMD16Storage
UInt64.SIMD2Storage
UInt64.SIMD32Storage
UInt64.SIMD4Storage
UInt64.SIMD64Storage
UInt64.SIMD8Storage
UInt64.Words
UInt8.SIMD16Storage
UInt8.SIMD2Storage
UInt8.SIMD32Storage
UInt8.SIMD4Storage
UInt8.SIMD64Storage
UInt8.SIMD8Storage
UInt8.Words
Unicode.ASCII
Unicode.ASCII.Parser
Unicode.CanonicalCombiningClass
Unicode.GeneralCategory
Unicode.NumericType
Unicode.ParseResult
T が Sendableに準拠する場合に準拠します。
Unicode.Scalar.UTF16View
Unicode.Scalar.UTF8View
Unicode.UTF16
Unicode.UTF16.ForwardParser
Unicode.UTF16.ReverseParser
Unicode.UTF32
Unicode.UTF32.Parser
Unicode.UTF8
Unicode.UTF8.ForwardParser
Unicode.UTF8.ReverseParser
UnicodeDecodingResult
Instance が Sendable に準拠する場合に準拠します。
UnownedJob
UnownedSerialExecutor
UnsafeContinuation
UnsafeCurrentTask
UnsafeMutableRawBufferPointer
UnsafeRawBufferPointer
UnsafeRawBufferPointer.Iterator
Zip2Sequence
Sequence1 が Sendable に準拠し、Sequence1 が Sequence に準拠し、Sequence2 が Sendable に準拠し、また Sequence2 が Sequence に準拠する場合に準拠します。
Zip2Sequence.Iterator
Sequence1 が Sequence に準拠し、Sequence2 が Sequence に準拠し、Sequence1.Iterator が Sendable に準拠し、また Sequence2.Iterator が Sendable に準拠する場合に準拠します。
protocol Actor
すべての Actor (アクター) が準拠する共通プロトコル。
protocol AnyActor
(ローカルな) Actor 型と (潜在的にリモートな) DistributedActor 型の両方に共有の "base" を提供する共通のマーカープロトコル。
class MainActor
実行部分がメインのディスパッチキューに相当する単独アクター。
protocol GlobalActor
プログラム内の任意の場所でさまざまな宣言を分離するために使用できる、グローバル的に一意なアクターを表す型。
typealias ConcurrentValue   廃止  
protocol UnsafeSendable
値をコピーすることで同時実行ドメイン間でその値を安全に渡すことができる型ですが、準拠サイトでの一部の安全性チェックが無効になります。
  廃止  
typealias UnsafeConcurrentValue   廃止