McD*_*ott 41 arguments objective-c ios performselector
我想在另一个线程的主线程上执行一个选择器,但是选择器有多个参数,类似于:
-(void) doSomethingWith:(int) a b:(float)b c:(float)c d:(float)d e:(float)e {
//...
}
我怎样才能使用它performSelectorOnMainThread: withObject: waitUntilDone:?
编辑
我想解释一下为什么我需要这个.
我在主线程上使用UIImageViews,并在另一个线程上对它们进行计算.我使用了很多计算,所以如果我在主线程上创建所有内容,那么应用程序就会滞后.我知道UI元素只能在主线程上操作,这就是为什么我希望它以这种方式工作,所以主线程可以听到没有滞后的触摸事件.
Dar*_*ust 97
当你使用iOS> = 4时,你会这样做:
dispatch_async(dispatch_get_main_queue(), ^{
[self doSomething:1 b:2 c:3 d:4 e:5];
});
Run Code Online (Sandbox Code Playgroud)
这就像做waitUntilDone:NO.如果要等到方法完成,请dispatch_sync改用.
您需要使用NSInvocation
创建对象,设置目标,选择器和参数.
然后,使用
[ invocationObject performSelectorOnMainThread: @selector( invoke ) withObject: nil, waitUntilDone: NO ];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26225 次 |
| 最近记录: |