Objective-C performSelector何时使用冒号?

时间:2009-10-09 22:31:30

标签: iphone objective-c

如果您正在调用外来对象,是否只使用以下方法对方法名称进行后缀?

出于某种原因

[self performSelector:@selector(myMethod:) withObject:nil afterDelay:5];

不起作用,但

[self performSelector:@selector(myMethod) withObject:nil afterDelay:5];

呢!

编辑:

在类的实现中声明但不是接口。

- (void)myMethod
{
   // Some stuff
}

2 个答案:

答案 0 :(得分:9)

冒号表示方法参数。由于 myMethod 不带参数,因此其选择器不能有冒号。如果你有这样的多个参数......

- (void)myMethod:(id)method object:(id)object enabled:(BOOL)bool {
  // Some Stuff
}

...选择器将 @selector(myMethod:object:enabled :)

答案 1 :(得分:4)

在Objective-C中,冒号是方法名称的一部分。也就是说,myMethodmyMethod:是不同的选择器(在您的情况下,只存在后者)。

例如,对于声明为:

的方法
-(void)doSomethingWithFoo:(int)foo andBar:(int)bar;

选择器为doSomethingWithFoo:andBar: