我遇到了performSelector的问题。如果我调用一个没有参数的方法,它就可以工作,但如果我传递一个参数,它甚至都不会调用该方法。
示例:
- (void)test
{
NSLog(@"test"); //it works!!
}
...
[self performSelector:@selector(test) withObject:nil afterDelay:1.0];
- (void)switchOn:(NSNumber *) index
{
NSLog(@"switchOn"); //it doesn't work :-(
}
....
NSLog(@"int is %d", [((NSNumber *)obj) intValue]); //print the correct value
[self performSelector:@selector(switchOn:) withObject:obj afterDelay:1.0];
我也没有错。哪里可能是问题?
感谢
答案 0 :(得分:3)
switchOn:selector的参数类型是什么?
必须属于 id ,否则performSelector:WithObject:将无效。引用文档:
aSelector应标识采用类型为id 的单个参数的方法。对于其他参数类型和返回值的方法,请使用 NSInvocation 。
答案 1 :(得分:2)
performSelectorWithObject:
使用您提供的对象作为第一个参数向选择器发送一条消息。接收方法必须接受id
类型的单个参数。其他任何使用NSInvocation。
您可能需要查看similar question有关此内容的信息。
答案 2 :(得分:0)
尝试使用:
- (void)switchOn:(id)index