Avatar
@MainActor @Sendable func _doMain(_ asyncFun: @escaping () async throws -> ()) async { do { try await asyncFun() } catch { _errorInMain(error) } } Task.detached { await _doMain(asyncFun) exit(0) } _asyncMainDrainQueue() これが実装で、Task.detached して exit(0), main は CFRunLoopRun() ということらしい。 (edited)