Сбой в 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()". У кого-нибудь есть решение для этого?

0 ответов

Другие вопросы по тегам