gpt4 book ai didi

objective-c - 将方法作为参数传递

转载 作者:搜寻专家 更新时间:2023-10-30 20:01:04 24 4
gpt4 key购买 nike

我可以将方法作为参数传递吗?在下面的示例中,我没有成功传递方法 targetOpenView:

-(void) targetTimeView:(id)sender {    
[self TimeViewWithtimeInterval:.6 selector:targetOpenView]; //targetOpenView does NOT work
}

-(void) timeViewWithtimeInterval:(float)interval selector:openViewMethod{
[NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(openViewMethod) userInfo:nil repeats:NO];
}

有什么建议可以让我完成这项工作吗?谢谢!

最佳答案

您需要 @selector 编译器指令从方法名称中提取选择,就像您在创建计时器时所做的那样:

[self TimeViewWithtimeInterval:.6 selector:@selector(targetOpenView)];

并将你的参数定义为 SEL 类型:

-(void) TimeViewWithtimeInterval:(float)interval selector:(SEL)openViewMethod
{
...
}

然后,当将参数传递给 NSTimer 方法时,您可以省略 @selector,因为该类型已经是一个选择器:

[NSTimer scheduledTimerWithTimeInterval:interval target:self
selector:@selector(openViewMethod) /* here */
userInfo:nil repeats:NO];

[NSTimer scheduledTimerWithTimeInterval:interval target:self
selector:openViewMethod /* pass it directly */
userInfo:nil repeats:NO];

关于objective-c - 将方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757710/

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