大佬教程收集整理的这篇文章主要介绍了objective-c – 在Cocoa应用程序中阻止主线程时,UI不会更新,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我的问题是在主线程中更新UI而不阻塞它并让其他对象在后台运行并根据需要将值返回给主线程的推荐方法是什么.我知道如何使用块,但不允许块操作返回值.
我需要的是帮助这个伪代码的东西:
-(IBACtion) main { //update progress inDicator UI to show progress //perform an call to another object from another class. // wait till i get its return value. //update progress inDicator UI to show progress // Use this return value to do something. //update progress inDicator UI to show progress }
相反,您要做的是设置一个后台块,在不同的点上更新主线程上的进度指示器.所以,例如:
- (IBACtion)start:(id)sender { dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); dispatch_async(queue,^{ dispatch_async(dispatch_get_main_queue(),^{[self.progress setProgress:0];}); // Doing some stuff dispatch_async(dispatch_get_main_queue(),^{[self.progress setProgress:.25];}); // Doing more stuff dispatch_async(dispatch_get_main_queue(),^{[self.progress setProgress:.75];}); }); }
(是的,这会导致队列保留自己,但这样就可以了,因为Self没有保留队列.)
以上是大佬教程为你收集整理的objective-c – 在Cocoa应用程序中阻止主线程时,UI不会更新全部内容,希望文章能够帮你解决objective-c – 在Cocoa应用程序中阻止主线程时,UI不会更新所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。