无法更改处理函数中的 UILabel 文本

Cannot change UILabel text in a handler function

我有一个 UILabel

@IBOutlet weak var log: UILabel!

我正在使用 SocketIO 创建调用处理程序。

self.socket.on("starwars") {[weak self] data, ack in
            log.text = "George Lucas"
            return
        }

但它不起作用。

我尝试在 viewDidLoad 中做同样的事情,它在那里工作。

我认为原因是 UILabel 很弱。当超出closure/block,"log"将被释放。所以你的标签没有文字。

编辑:在哪里连接标签(如IBOutlet)使它像(nonatomic, strong)

尝试如下,

self.socket.on("starwars") {[weak self] data, ack in
       dispatch_async(dispatch_get_main_queue()) {
       log.text = "George Lucas"
       }

        return
 }