如何将SEL传递给dispatch_async方法

new*_*ev1 3 objective-c selector grand-central-dispatch

我正在尝试创建一个泛型方法,它将一个SEL参数作为参数传递给dispatch_async执行,但我无法如何执行传入的SEL.请允许有人帮助我.

// Test.m

-(void) executeMe
{
    NSLog(@"Hello");
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    SEL executeSel = @selector(executeMe);
    [_pInst Common_Dispatch: executeSel];
}

// Common.m
-(void) Common_Dispatch:(SEL) aSelector
{
    dispatch_async(iDispatchWorkerQueue, ^(void) {
        // How to execute aSelector here?
    });
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 6

您还需要在Common_Dispatch方法上使用"target"参数,因为您需要在特定对象上调用选择器.

- (void)viewDidLoad {
    [super viewDidLoad];

    SEL executeSel = @selector(executeMe);
    [_pInst Common_Dispatch:executeSel target:self];
}

- (void)Common_Dispatch:(SEL)aSelector target:(id)target {
    dispatch_async(iDispatchWorkerQueue, ^(void) {
        [target performSelector:aSelector];
    });
}
Run Code Online (Sandbox Code Playgroud)

BTW - 标准命名约定规定方法名称应以小写开头并使用camelCase.你的方法应该是commonDispatch.