Swift 4 NSObject class, StreamDelegate 未被调用

Swift 4 NSObject class, StreamDelegate Not being called

大家好,我的 NSObject class 文件在设置委托时遇到问题。

class NetWorkController: NSObject, StreamDelegate{)

当我尝试设置

inputStream!.delegate =  self

但是,如果我在我的 UIViewcontroller 中做同样的事情 class 它确实有效

class ConnectPlayerViewController: UIViewController, StreamDelegate {}

我不明白为什么它在这里有效,但在我的 NSObject 中却无效 class,感谢您的提前帮助。

这里是 StreamDelegate 处理函数:

func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
    DispatchQueue.main.async(execute: {
        if aStream == self.inputStream {
            self.inputStreamHandle(eventCode)
        }
        else if aStream == self.outputStream {
            self.outputStreamHandle(eventCode)
        }

    })
}

我想你有

NetWorkController().connect()

在您 VC 的某些方法中。由于 Automatic Reference Counting,这不起作用。您的对象将 "disappear" 在方法 returns 之后。

您需要将其声明为 属性:

// outside of any method, at class level
let controller = NetWorkController()

// in some method
controller.connect()

现在应该调用委托方法。