如果我有一个名为“-uploadToServer:(Object *)objectToUpload”的方法,并且有多个对象的可变数组,并且我想一个接一个地上载每个对象,那么我该如何最好地处理呢?
有三个重要的注意事项:
这是我已经有的一些代码:
for (Object *task in objectsToUpload) {
[self uploadToServer:task];
//need to wait to get notification that upload completed
}
-(void)uploadToServer:(Object *)objectToUpload {
//perform asynchronous server operation here
//either block callback or delegate to notify
//self that upload finished
}
鉴于以上情况,您认为我应该如何处理?
最佳答案
不需要NSOperation,因为我不想处理线程问题
老实说,我认为这是您最简单的选择。唯一的其他方法是执行异步IO并使用运行循环。
使用NSOperation,您需要两种不同的操作,例如UploadOperation
和NotifyOperation
:完成所有操作后,一个上传对象,一个向主线程发送通知。
然后,您将遍历这些对象,并将它们全部放在NSOperationQueue
的UploadOperation
上,每个对象都依赖于上一个(addDependency:
)。最后,根据最后一个NotifyOperation
将UploadOperation
放入队列。NotifyOperation
覆盖main
如下
-(void) main
{
[someObjectEgViewController performSelectorOnMainThread: @selector(finishedUpload)
withObject: nil
waitUntilDone: NO];
}
关于objective-c - Objective-C快速枚举和异步服务器操作。模型帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572783/