iOS通知方法内修改UI无效

2017-09-20  本文已影响21人  7d3fadbb4407

今天在写一个接收SDK通知,更改按钮的文案,结果发现没有任何的作用。ok,我觉得说不定是xcode问题,赶项目,也懒得重启+清缓存排查问题,直接记录过掉。

随后我调用了ProgressHUD提示框,报出错误:This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.

错误的大致意思是:主线程在运行的时候子线程修改了主线程UI的布局约束。虽然不会导致崩溃,程序能正常跑,但有没有发现这个错误正是导致我上个更改按钮文案失败的原因。

很高兴(心疼xcode几秒钟),问题找着了。解决方法这里也贴一下:

dispatch_async(dispatch_get_main_queue(), ^{

      // 更新UI的操作

});

本着程序员刨根问底的学习精神,找了相关资料,发现接收通知所在的线程由发出通知的线程决定。

也就是说根据postNotificationName所在的线程决定,而不是addObserver。

上一篇下一篇

猜你喜欢

热点阅读