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()
现在应该调用委托方法。
大家好,我的 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()
现在应该调用委托方法。