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。