我的iOS委托方法是否总是在主线程上返回?

这是一个“最佳实践”问题,我似乎无法在网上找到一个好的答案.我正在创建一个静态代码库,它提供了几种委托方法来进行其他事情的进度反馈.

该库管理它自己的队列,所以下载的事情显然没有在主线程上完成,但我的问题是我应该确保我的委托方法总是在主线程上调用,或者是否可以从排队的线程调用它我我在用?如果他想在我的委托方法中进行UI更新,那么依赖于使用该库来检查他是否在主线程上的开发人员?

干杯,
山姆

解决方法

你可以这样做;你只需要记录好这一点.

有些API会在主线程上回调您,有些API会在您用于启动工作的线程(或runloop)上回调,而其他API则根本不做任何保证.有些甚至会让你传入一个用于所有回调的GCD队列.

请记住,委托/回调可以阻止非常重要的时间,因此如果您的API需要尽快恢复工作,您当然希望分派到另一个线程或队列.

说完这一切之后,除非性能对您或API的用户至关重要,否则我会为开发人员提供最方便的主线程.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...