Objective c 在Objective C中后台异步方法

Objective c 在Objective C中后台异步方法,objective-c,asynchronous,background,thrift,Objective C,Asynchronous,Background,Thrift,我希望能够在不阻塞UI的情况下发送数据。这些文件相当大,因此无法同步发送它们 我有一个类,它实现了通过Apache Thrift发送数据的所有方法 我看到的所有异步请求都使用NSURLRequest和NSURLConnection,但对于我的应用程序,我希望使用我的类 基本上,我想异步调用此方法: - (void)syncLocalData { Manager *stateManager = [[Manager alloc] init]; [stateManager readDi

我希望能够在不阻塞UI的情况下发送数据。这些文件相当大,因此无法同步发送它们

我有一个类,它实现了通过Apache Thrift发送数据的所有方法

我看到的所有异步请求都使用NSURLRequest和NSURLConnection,但对于我的应用程序,我希望使用我的类

基本上,我想异步调用此方法:

- (void)syncLocalData {
    Manager *stateManager = [[Manager alloc] init];
    [stateManager readDirectory];
}
在readDirectory中,我遍历设备目录,如果有文件,则发送数据。

GCD(Grand Central Dispatch)提供了易于使用的异步执行代码的功能 在后台线程上:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [yourInstance syncLocalData];
});
根据您的需要,您可以使用全局队列(这是一个“并发”队列),
或者创建自己的“串行”队列。

您的问题是什么?如何“浏览设备目录”?如何“发送数据”?如何异步调用方法?我已经实现了遍历目录并发送数据。我只是想能够异步调用我的方法。我想知道为什么您首先要将固有的异步网络请求包装到同步助手方法中?我会简单地异步调用网络请求。太棒了,这似乎是可行的!如果用户在发送数据时可能退出应用程序,您将如何处理这种情况?那么,您需要在阵列(或NSOperationQueue)中保存更多令人敬畏的异步和可取消的网络请求如果你想取消它们,可以访问它们。如果你想进行任何清理,可以订阅UIApplicationIdentinterBackgroundNotification。谢谢,Martin R!最后一个问题:我使用dispatch_async方法调用一个方法以异步发送数据,但如果失败(网络错误),它将显示UIAlert。我意识到这会使应用程序崩溃,很可能是因为它是一个UI方法。你建议我如何显示UIAlert?所以在谷歌搜索之后,我找到了这个方法:
dispatch\u async(dispatch\u get\u main\u queue(),^{
,它似乎完成了任务。