调整变量的ARC

This commit is contained in:
anlicheng 2026-05-06 15:39:14 +08:00
parent 0a7c8eca85
commit f9fa7bf73e
2 changed files with 21 additions and 8 deletions

View File

@ -165,7 +165,9 @@ actor SDLContextActor {
await quicClient.start() await quicClient.start()
defer { defer {
self.quicClient = nil if self.quicClient === quicClient {
self.quicClient = nil
}
SDLLogger.log("[SDLContext] startSuperClient defer") SDLLogger.log("[SDLContext] startSuperClient defer")
} }
@ -492,8 +494,11 @@ actor SDLContextActor {
self.dnsMonitorTask?.cancel() self.dnsMonitorTask?.cancel()
self.dnsLocalMonitorTask?.cancel() self.dnsLocalMonitorTask?.cancel()
let quicClient = self.quicClient
self.quicClient = nil
self.superMonitorTask?.cancel() self.superMonitorTask?.cancel()
self.udpHoleMonitorTask?.cancel() self.superMonitorTask = nil
await quicClient?.stop()
self.readTask?.cancel() self.readTask?.cancel()
self.readTask = nil self.readTask = nil

View File

@ -44,7 +44,6 @@ actor SDLQUICClient {
private var readTask: Task<Void, Never>? private var readTask: Task<Void, Never>?
private var connection: NWConnection? private var connection: NWConnection?
private let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 线
private let host: String private let host: String
private let port: UInt16 private let port: UInt16
@ -58,6 +57,9 @@ actor SDLQUICClient {
} }
func start() { func start() {
let host = self.host
let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 线
let options = NWProtocolTLS.Options() let options = NWProtocolTLS.Options()
sec_protocol_options_add_tls_application_protocol( sec_protocol_options_add_tls_application_protocol(
options.securityProtocolOptions, options.securityProtocolOptions,
@ -67,11 +69,11 @@ actor SDLQUICClient {
// //
sec_protocol_options_set_verify_block( sec_protocol_options_set_verify_block(
options.securityProtocolOptions, options.securityProtocolOptions,
{ metadata, trust, complete in { _, trust, complete in
// //
complete(TLSVerifier.verify(trust: trust, host: self.host)) complete(TLSVerifier.verify(trust: trust, host: host))
}, },
self.queue queue
) )
SDLLogger.log("[SDLQUICClient] start with tls protocol", for: .debug) SDLLogger.log("[SDLQUICClient] start with tls protocol", for: .debug)
@ -87,7 +89,7 @@ actor SDLQUICClient {
await self?.handleConnectionState(state: state) await self?.handleConnectionState(state: state)
} }
} }
connection.start(queue: self.queue) connection.start(queue: queue)
self.connection = connection self.connection = connection
} }
@ -190,7 +192,13 @@ actor SDLQUICClient {
self.state = .stopped self.state = .stopped
self.readTask?.cancel() self.readTask?.cancel()
self.connection?.cancel() self.readTask = nil
let connection = self.connection
self.connection = nil
connection?.stateUpdateHandler = nil
connection?.cancel()
self.finishMessageContinuationIfNeed(throwing: nil) self.finishMessageContinuationIfNeed(throwing: nil)
SDLLogger.log("[SDLQUICClient] stopped") SDLLogger.log("[SDLQUICClient] stopped")