Ios 如何创建一个异步方法来处理来自委托的数据?
我使用btstack在iPhone和外部设备之间进行通信。我想发送一个特殊命令来检索设备的特殊数据。但我只能从btstack的handlePacket:method获取数据。我只能使用委托来处理数据。 但我想做一个这样的方法:Ios 如何创建一个异步方法来处理来自委托的数据?,ios,objective-c,asynchronous,delegates,Ios,Objective C,Asynchronous,Delegates,我使用btstack在iPhone和外部设备之间进行通信。我想发送一个特殊命令来检索设备的特殊数据。但我只能从btstack的handlePacket:method获取数据。我只能使用委托来处理数据。 但我想做一个这样的方法: - (void)readDataAsyncWithCompletionHandler:(Handler)handler 处理程序块应该获取数据。 我不知道该怎么做。 我制作了一个命令类来进行命令构造和发送 我知道我们可以用c#中的wait!那么如何在ios中处理它呢?你
- (void)readDataAsyncWithCompletionHandler:(Handler)handler
处理程序块应该获取数据。
我不知道该怎么做。
我制作了一个命令类来进行命令构造和发送
我知道我们可以用c#中的wait!那么如何在ios中处理它呢?你应该这样写
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//do you time consuming task
dispatch_sync(dispatch_get_main_queue(), ^{
//if you are doing any interaction with UI, do it here
});
});
最佳实践是在这种情况下使用大集中调度。是一个初学者友好的教程,是GCD上的Apple官方文档。您可以使用
[self performSelectorInBackground:@selector(theMethod) withObject:nil];
或创建NSInvocationOperation对象
NSInvocationOperation operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(theMethod) object:nil];
并将其添加到NSOperationQueue
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
[queue addOperation:operation];
或者如上所述创建一个调度异步块。您应该添加当前使用委托方法的方式。如果忽略了重要的细节,就不可能提出可行的解决方案。