From c971b9784777439c851704bf4a0b63e7b05a57ae Mon Sep 17 00:00:00 2001 From: Antoine Marandon Date: Fri, 29 Nov 2024 21:40:02 +0900 Subject: [PATCH] Add mainactor for action handler --- Sources/Components/Compositions/AnyDisplayNode.swift | 11 ++++++++--- .../Components/Tools/NamedDisplayCellNodeBase.swift | 11 +++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Sources/Components/Compositions/AnyDisplayNode.swift b/Sources/Components/Compositions/AnyDisplayNode.swift index 1b1864c..62b87da 100644 --- a/Sources/Components/Compositions/AnyDisplayNode.swift +++ b/Sources/Components/Compositions/AnyDisplayNode.swift @@ -57,8 +57,8 @@ public typealias FunctionalDisplayNode = AnyDisplayNode } ``` */ -open class AnyDisplayNode: SafeAreaDisplayNode { - +open class AnyDisplayNode: SafeAreaDisplayNode, @unchecked Sendable { + private var retainItems: [Any] private let hook: Hook = .init() @@ -106,7 +106,12 @@ open class AnyDisplayNode: SafeAreaDisplayNode { } @available(*, unavailable) +<<<<<<< Updated upstream open override func onDidLoad(_ body: @escaping ASDisplayNodeDidLoadBlock) { +======= + @MainActor + open override func onDidLoad(_ body: @escaping ASDisplayNodeDidLoadBlock) { +>>>>>>> Stashed changes super.onDidLoad(body) } @@ -145,7 +150,7 @@ open class AnyDisplayNode: SafeAreaDisplayNode { public typealias PropsFunctionalDisplayNode = AnyPropsDisplayNode /// It's not so effective in reducing binary-size. -public final class AnyPropsDisplayNode: AnyDisplayNode { +public final class AnyPropsDisplayNode: AnyDisplayNode, @unchecked Sendable { private var _onUpdatedProps: (ASDisplayNode, Props) -> Void = { _, _ in } diff --git a/Sources/Components/Tools/NamedDisplayCellNodeBase.swift b/Sources/Components/Tools/NamedDisplayCellNodeBase.swift index 2b67497..ce69039 100644 --- a/Sources/Components/Tools/NamedDisplayCellNodeBase.swift +++ b/Sources/Components/Tools/NamedDisplayCellNodeBase.swift @@ -30,10 +30,17 @@ fileprivate let queue = DispatchQueue.global() /// It helps to find source code from Reveal. /// /// - Author: TetureSwiftSupport +<<<<<<< Updated upstream open class NamedDisplayCellNodeBase: ASCellNode { private var __actionHandlers: [(NamedDisplayCellNodeBase, DisplayNodeAction) -> Void] = [] +======= +open class NamedDisplayCellNodeBase: ASCellNode, @unchecked Sendable { + + private var __actionHandlers: [@MainActor (NamedDisplayCellNodeBase, DisplayNodeAction) -> Void] = [] + +>>>>>>> Stashed changes @MainActor open override func didLoad() { super.didLoad() @@ -67,11 +74,11 @@ open class NamedDisplayCellNodeBase: ASCellNode { return self } - + + @MainActor private func propagate(action: DisplayNodeAction) { for handler in __actionHandlers { handler(self, action) } } - }