在我的例子中传递块作为参数 [英] pass block as parameter in my case
本文介绍了在我的例子中传递块作为参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个以块作为参数的函数:
I have a function which takes a block as parameter:
typedef void (^ MyBlock)(int);
-(void)doTask:(MyBlock)theBlock{
...
}
我需要在另一个线程上运行上面的函数,我想使用 - performSelector:onThread:withObject:waitUntilDone:,my current code:
I need to run above function on another thread, I want to use - performSelector:onThread:withObject:waitUntilDone: , my current code:
NSThread *workerThread = [[NSThread alloc] init];
[workerThread start];
[self performSelector:@selector(doTask:)
onThread:workerThread
withObject:???
waitUntilDone:NO];
但是,如何传递 MyBlock
参数用这种方法? (请不要建议GCD,我想知道如何处理我当前的代码,是否可能?)
BUT, How can I pass MyBlock
parameter with this approach? (Please don't suggest GCD, I am wondering how can I do with my current code, is it possible?)
推荐答案
此答案假设您正在使用ARC。如果你不是那么你需要多做一点,但总的来说答案是一样的。
但是,如何我可以用这种方法传递
MyBlock
参数吗?
块是一个对象,你不需要做任何特别的事情。例如:
A block is an object, you don't need to do anything special. E.g.:
[self performSelector:@selector(doTask:)
onThread:workerThread
withObject:^(int arg){ NSLog(@"block passed: %d", arg); }
waitUntilDone:NO];
HTH
这篇关于在我的例子中传递块作为参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文