Я работаю над приложением, использующим библиотеку SwiftMQTT.У меня сбой после короткого периода между созданием и удалением MQTTSessionStream - проблема в том, что [слабое Я] было выпущено до выполнения асинхронного блока в sessionQueue.Это не происходит сразу, но это происходит после нескольких попыток.
sessionQueue.async { [weak self] in
let currentRunLoop = RunLoop.current
inputStream?.schedule(in: currentRunLoop, forMode: RunLoop.Mode.default)
outputStream?.schedule(in: currentRunLoop, forMode: RunLoop.Mode.default)
inputStream?.open()
outputStream?.open()
if ssl {
let securityLevel = StreamSocketSecurityLevel.negotiatedSSL.rawValue
inputStream?.setProperty(securityLevel, forKey: .socketSecurityLevelKey)
outputStream?.setProperty(securityLevel, forKey: .socketSecurityLevelKey)
}
if timeout > 0 {
DispatchQueue.global().asyncAfter(deadline: .now() + timeout) {
self?.connectTimeout()
}
}
currentRunLoop.run()
}
Сбой происходит в строке, содержащей "currentRunLoop.run ()".У кого-нибудь есть решение для этого?