Сбой в MQTTSessionStream в currentRunLoop.run() - SwiftMQTT
Я работаю над приложением, использующим библиотеку 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()". У кого-нибудь есть решение для этого?