我想在另一个线程的主线程上执行 Select 器,但 Select 器有多个参数,类似于此:

-(void) doSomethingWith:(int) a b:(float)b c:(float)c d:(float)d e:(float)e { //... }

我怎样才能让这个和performSelectorOnMainThread: withObject: waitUntilDone:一起工作?

EDIT

我想解释一下为什么我需要这个.

我在主线程上使用UIImageView,并在另一个线程上为它们进行计算.我使用了大量的计算,所以如果我在主线程上完成所有操作,应用程序就会滞后.我知道UI元素只能在主线程上操作,这就是为什么我希望它以这种方式工作,这样主线程就可以毫无延迟地监听touch 事件.

推荐答案

When you're using iOS >= 4, you'd do this instead:

dispatch_async(dispatch_get_main_queue(), ^{
    [self doSomething:1 b:2 c:3 d:4 e:5];
});

这就像做了waitUntilDone:NO次.如果要等到方法完成,请使用dispatch_sync.

Objective-c相关问答推荐

如何从 Cocoa 的 NSDictionary 中获取特定键的值?

在 Objective-C 中完成受保护属性的解决方法

TWTweetComposeViewController 在 IOS6 中已弃用

如何用零填充左侧的整数?

Xcode 中架构的重复符号

负数的奇怪 Objective-C Mod 行为

Iphone,获取 NSArray 中的国家/地区列表

与 iOS 6.0 原生 Facebook 集成共享:通过我的应用名称发布?

CoreData 关系故障?

在 Xcode 5 中运行代码覆盖时出现数十个profiling:invalid arc tag

声音在 iPhone 模拟器中不起作用?

如何禁用 UIButton?

如何在 UIImageView 中显示 base64 图像?

如何在 Objective C 中将浮点数转换为 int?

Objective-C构建中的重复符号错误?

Highlighted 和 Selected UIButton 的 State 有什么区别?

BOOL到 NSString

所有异常断点在模拟器上无缘无故停止

将数据传回前一个视图控制器

找出用户是否按下了 uinavigationcontroller 中的后退按钮?