Cha*_*pta 8 cocoa cocoa-touch objective-c grand-central-dispatch
乍一看,这似乎是一个简单的问题,但我无法想象如何在某个背景线程上运行匿名块,即我正在寻找相当于的块-performSelector:onThread:withObject:waitUntilDone:.
相关:是否可以将调度队列与某个后台线程相关联,就像主队列与应用程序的主线程相关联一样?
编辑澄清我正在寻找运行匿名块
如果我理解你,你应该这样做:
dispatch_queue_t thread = dispatch_queue_create("your dispatch name", NULL);
dispatch_async(analyze, ^{
//code of your anonymous block
});
dispatch_release(thread);
Run Code Online (Sandbox Code Playgroud)
你也可以写一些方法,它会阻止它,但你应该知道它将包含哪种类型的参数:
-(void)performBlock:(void (^)(SomeType par1, SomeType par2))block ToData:(Sometype)data;
Run Code Online (Sandbox Code Playgroud)
你可以用匿名块来调用它:
[something performBlock:^(SomeType par1, SomeType par2){
//do your stuff
} ToData: data]
Run Code Online (Sandbox Code Playgroud)
在方法中,您可以将块调用为简单的C函数:
block(par1, par2);
Run Code Online (Sandbox Code Playgroud)
我RunOnThread()最近在Mike Ash的PLBlocksPlayground中看到了这个函数(zip文件,请参阅BlocksAdditions.m):
void RunOnThread(NSThread *thread, BOOL wait, BasicBlock block)
{
[[[block copy] autorelease] performSelector: @selector(my_callBlock) onThread: thread withObject: nil waitUntilDone: wait];
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的.
在PLBlocksPlayground中有许多其他非常有用的块相关实用程序,其中大部分是Ash先生在这篇文章中解释的.
| 归档时间: |
|
| 查看次数: |
5355 次 |
| 最近记录: |