objective-c - Objective-C快速枚举和异步服务器操作。模型帮助?

标签 objective-c ios asynchronous for-loop

如果我有一个名为“-uploadToServer:(Object *)objectToUpload”的方法,并且有多个对象的可变数组,并且我想一个接一个地上载每个对象,那么我该如何最好地处理呢?

有三个重要的注意事项:

  • 不需要NSOperation,因为我不想处理线程问题
  • 在继续
  • 之前需要等待任务完成的通知
  • 服务器调用是异步且无阻塞的

  • 这是我已经有的一些代码:
    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,您需要两种不同的操作,例如UploadOperationNotifyOperation:完成所有操作后,一个上传对象,一个向主线程发送通知。

    然后,您将遍历这些对象,并将它们全部放在NSOperationQueueUploadOperation上,每个对象都依赖于上一个(addDependency:)。最后,根据最后一个NotifyOperationUploadOperation放入队列。
    NotifyOperation覆盖main如下

    -(void) main
    {
        [someObjectEgViewController performSelectorOnMainThread: @selector(finishedUpload)
                                                     withObject: nil 
                                                  waitUntilDone: NO];
    }
    

    关于objective-c - Objective-C快速枚举和异步服务器操作。模型帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572783/

    相关文章:

    c# - 使用 WaitHandle.WaitOne

    ios - 如何从 Hexdump 字符串中创建 NSData?

    ios - 为什么会出现以及如何修复 [UIView release] : message sent to deallocated instance

    objective-c - 将 NSStrings 与 Ä,Ö,Ü 进行比较

    ios - 登录注销 Tableview Swift

    ios - 如何在滚动时将单元格的内容保留在屏幕上,直到单元格用完可用空间?

    ios - 从现有的 sqlite.db 读取数据正在模拟器上工作,但不是实际设备( Objective-C )

    ios编辑表格,键盘隐藏字段

    python - 多处理 apply_async() 在 Ubuntu 上不起作用

    带有 async=true 的 JQuery .ajax 总是返回错误