Tra*_*ace 3 objective-c argument-passing
我可以传递一个方法作为参数吗?我没有成功传递下面示例中的方法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];
}
Run Code Online (Sandbox Code Playgroud)
有什么建议我可以做这个工作吗?谢谢!
您需要@selector编译器指令从方法名称中提取select,就像您在创建计时器时所做的那样:
[self TimeViewWithtimeInterval:.6 selector:@selector(targetOpenView)];
Run Code Online (Sandbox Code Playgroud)
并定义您的类型的参数SEL:
-(void) TimeViewWithtimeInterval:(float)interval selector:(SEL)openViewMethod
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后,当将参数传递给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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |