有很多方法可以实现这一点,
1.使用协议或委托
您说“我有一个类是 GCDAsyncUdpSocketDelegate。”在该类中编写协议实现并让您的视图控制器订阅该委托,当您为您的 GCDAsyncUdpSocketDelegate 获取委托回调时,请执行必要的检查并将您的自定义委托触发到视图控制器,将数据作为参数传递给委托方法。在视图控制器中获取数据并更新 IBOutlet。
2。使用 NSNotificationCenter(肮脏的做事方式,但要小心)
在你的视图控制器类中为你要发布的通知添加一个观察者,
NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateUI:", name: "didRecieveDataFromUDP", object: nil)
在你的 VC 中添加一个方法
func updateUI(notifObject:NSNotification){
let responseString = notifObject.object
self.yourOutlet.string = responseString
}
当你用完 VC 后也移除通知观察者。
在 GCDAsyncUdpSocketDelegate 委托类中,当您收到带有结果的回调时会触发此通知,
NSNotificationCenter.defaultCenter().postNotificationName("didRecieveDataFromUDP"", object: theResposenObjectYouNeedToSend)
3.使用 sharedInstances 或滥用 AppDelegate(不推荐)
创建将贯穿应用生命周期的共享实例或单例类,并使用它们存储/检索来自任何类或任何线程的数据。
希望这会有所帮助,我希望您选择第一种或第二种方式。