在我的例子中传递块作为参数 [英] pass block as parameter in my case

查看:87
本文介绍了在我的例子中传递块作为参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个以作为参数的函数:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆