insertNextChange
が idle中に来るとactiveになる pending中に来ると、そこまで集めた変更(があれば)をresume送信してidleになるnext()
が呼ばれるからnext()
が呼ばれるまでの間」に、発生したdidSetがpending stateとして累積されているんだわ (edited)@MainActor func handleChanges(_ example: ChangesExample) { Task { @MainActor in for await change in example.changes(for: [\.someField, \.someOtherField]) { switch (change.contains(\.someField), change.contains(\.someOtherField)) case (true, true): print("Changed both properties") case (true, false): print("changed integer field") case (false, true): print("changed string field") default: fatalError("this case will never happen") } } } }
example.changes().next
が for-await によって呼ばれて・・・.next
の結果を送信するための Continuationが、MainActorコンテキストなTaskから呼びされた場合は