iOS具有多个参数的performSelectorOnMainThread

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

-(void) doSomethingWith:(int) ab:(float)bc:(float)cd:(float)de:(float)e { //... }

我怎么能得到这个performSelectorOnMainThread: withObject: waitUntilDone:

编辑

我想解释为什么我需要这个。

我在主线程上使用UIImageViews,并在另一个线程上对它们进行计算。 我使用了大量的计算,所以如果我在主线程上做了所有的事情,应用程序就会滞后。 我知道UI元素只能在主线程中操作,这就是为什么我想这样工作,所以主线程可以听触摸事件没有滞后。

当你使用iOS> = 4时,你会这样做:

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

这就像做waitUntilDone:NO 。 如果您想等到方法结束,请使用dispatch_sync

你需要使用NSInvocation

创build对象,设置目标,select器和参数。
然后,使用

 [ invocationObject performSelectorOnMainThread: @selector( invoke ) withObject: nil, waitUntilDone: NO ]; 

你可以传递一个具有所需参数的NSDictionary / NSArraytypes的对象。

并在你的函数中接受相同types的对象。 然后,分解值并继续处理。

你必须使用NSNumber的数值将它们添加到NSarray / NSDictionary和稍后在您的函数中,您可以将它们转换回intValue / floatValue

最好的降压。