Avatar
戻り値を捨てなくても、同じように一回 foo 経由ならやりたいことはできるのに、そうしないとできないのはなんか納得できないですよね… class NonSendable { var bool: Bool = .random() } func makeNonSendable() async -> NonSendable { NonSendable() } struct Demo: View { @State private var bool: Bool? nonisolated func foo() async { let ns = await makeNonSendable() Task { @MainActor in bool = ns.bool } } var body: some View { Text("Hello, World!") .task { // NG let ns = await makeNonSendable() bool = ns.bool } .task { // OK await foo() } } } ↑のコード、結局 foo の中でも ns がアクター隔離超えて .bool 渡してるじゃん…? (edited)
t_naruhodo 1