我的代码告诉我它是通过 [NSThread currentThread] isMainThread]
以及我也可以显示 UIAlertView
的事实。这似乎出乎意料,因为我的理解是请求是异步发送的。
我会加入一些相关代码,但没什么特别的。我通过 RKObjectManager
POST
对象,success
和 failure
完成 block 在主 UI 线程上执行(甚至虽然我肯定在请求完成后在后台做一些事情)。
我很困惑。
这是怎么回事?
最佳答案
RKObjectManager
在幕后创建并发送一个 RKObjectRequestOperation
(本质上代表您的 POST 请求)到 NSOperationQueue
中以执行所有网络并在后台线程中异步映射内容。
当请求完成并处理响应时 - 默认行为是在主线程上运行 success
或 failure
回调。这是一个很好的快速设置,可以帮助您非常快速和轻松地构建应用程序(而不用担心在正确的线程上更新 UI)。
您可以轻松更改该行为,RKObjectRequestOperation
有 2 个属性,successCallbackQueue
和 failureCallbackQueue
,您可以将它们设置为另一个后台线程,然后当您需要在 UI 端更改某些内容时,只需将更改包装到一个 block 中并发布到主队列:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
}];
关于ios - RestKit 完成 block 是否在主 UI 线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20809891/