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
等
最好的降压。