Objective c 在主线程上使用多个参数执行方法的最简单方法是什么?
这个方法真的很酷:Objective c 在主线程上使用多个参数执行方法的最简单方法是什么?,objective-c,ios,multithreading,cocoa-touch,Objective C,Ios,Multithreading,Cocoa Touch,这个方法真的很酷: -(void)performselectornmainthread:(SEL)一个带有object:(id)argwaituntildone:(BOOL)wait的选择器 但我需要像它这样简单的东西来执行在主线程中有很多参数的方法,比如: -(void)methodWithFirstObject:secondObject: 最简单的方法是什么?使用对象作为参数 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAn
-(void)performselectornmainthread:(SEL)一个带有object:(id)argwaituntildone:(BOOL)wait的选择器代码>
但我需要像它这样简单的东西来执行在主线程中有很多参数的方法,比如:
-(void)methodWithFirstObject:secondObject:
最简单的方法是什么?使用对象作为参数
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"value1", @"arg1", @"value2", @"arg2", nil];
在arg中传递dict
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
performSelectorOnMainThread
只是一种使用NSOperation
的便捷方式,这是一种使用GDC的便捷方式。如果您需要更多的功能,只需下拉到下一个级别。您将不得不管理更复杂一点,但将具有更大的灵活性。很多可可豆都是这样设计的
你会想的,但我认为这会满足你的要求[在我的手机上输入,尚未编译]
如果希望waitUntilDone
为NO
,或dispatch\u sync()
为YES
,则调用dispatch\u async()
:
dispatch_async(dispatch_get_main_queue(), ^{
[reciever methodWithFirstObject:obj1 secondObject:obj2];
});
如果已经在主线程上,请确保不要使用dispatch\u sync()
;如有必要,您可以测试dispatch\u get\u current\u queue()
的结果
dispatch_async(dispatch_get_main_queue(), ^{
[reciever methodWithFirstObject:obj1 secondObject:obj2];
});