调整变量的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()
defer {
self.quicClient = nil
if self.quicClient === quicClient {
self.quicClient = nil
}
SDLLogger.log("[SDLContext] startSuperClient defer")
}
@ -492,8 +494,11 @@ actor SDLContextActor {
self.dnsMonitorTask?.cancel()
self.dnsLocalMonitorTask?.cancel()
let quicClient = self.quicClient
self.quicClient = nil
self.superMonitorTask?.cancel()
self.udpHoleMonitorTask?.cancel()
self.superMonitorTask = nil
await quicClient?.stop()
self.readTask?.cancel()
self.readTask = nil

View File

@ -44,7 +44,6 @@ actor SDLQUICClient {
private var readTask: Task<Void, Never>?
private var connection: NWConnection?
private let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 线
private let host: String
private let port: UInt16
@ -58,6 +57,9 @@ actor SDLQUICClient {
}
func start() {
let host = self.host
let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 线
let options = NWProtocolTLS.Options()
sec_protocol_options_add_tls_application_protocol(
options.securityProtocolOptions,
@ -67,11 +69,11 @@ actor SDLQUICClient {
//
sec_protocol_options_set_verify_block(
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)
@ -87,7 +89,7 @@ actor SDLQUICClient {
await self?.handleConnectionState(state: state)
}
}
connection.start(queue: self.queue)
connection.start(queue: queue)
self.connection = connection
}
@ -190,7 +192,13 @@ actor SDLQUICClient {
self.state = .stopped
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)
SDLLogger.log("[SDLQUICClient] stopped")