gpt4 book ai didi

objective-c - 如何将 SEL 传递给 dispatch_async 方法

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:13 25 4
gpt4 key购买 nike

我正在尝试创建一个将 SEL 作为参数并将其传递给 dispatch_async 以执行的通用方法,但我不知道如何执行传入的选择。这里有人可以帮助我吗?

// 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?
});
}

最佳答案

您的 Common_Dispatch 方法还需要有一个“目标”参数,因为您需要在特定对象上调用选择器。

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

顺便说一句——标准命名约定规定方法名称应以小写字母开头并使用驼峰命名法。您的方法应该是 commonDispatch。

关于objective-c - 如何将 SEL 传递给 dispatch_async 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com