Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在主线程上使用多个参数执行方法的最简单方法是什么?_Objective C_Ios_Multithreading_Cocoa Touch - Fatal编程技术网

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];
});