如果您正在调用外来对象,是否只使用以下方法对方法名称进行后缀?
出于某种原因
[self performSelector:@selector(myMethod:) withObject:nil afterDelay:5];
不起作用,但
[self performSelector:@selector(myMethod) withObject:nil afterDelay:5];
呢!
编辑:
在类的实现中声明但不是接口。
- (void)myMethod
{
// Some stuff
}
答案 0 :(得分:9)
冒号表示方法参数。由于 myMethod 不带参数,因此其选择器不能有冒号。如果你有这样的多个参数......
- (void)myMethod:(id)method object:(id)object enabled:(BOOL)bool {
// Some Stuff
}
...选择器将 @selector(myMethod:object:enabled :)
答案 1 :(得分:4)
在Objective-C中,冒号是方法名称的一部分。也就是说,myMethod
和myMethod:
是不同的选择器(在您的情况下,只存在后者)。
例如,对于声明为:
的方法-(void)doSomethingWithFoo:(int)foo andBar:(int)bar;
选择器为doSomethingWithFoo:andBar:
。