使用冒号:或不使用选择器

时间:2011-09-05 16:03:52

标签: objective-c selector colon

我想知道:用冒号@selector(mySelector)编写选择器名称或用冒号编写@selector(mySelector:)之间的区别是什么?

如:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWith... 
                                                       target:self
                                                       action:@selector(addAction:)];

我找不到没有冒号的另一个例子,但我很确定我已经看过其中的一些。

2 个答案:

答案 0 :(得分:13)

在方法的名称之后需要冒号,当且仅当方法接受参数时。

无功能参数:

-(void)addAction {}

// Use ...@selector(addAction)...

有参数:

-(void)addAction:(id)info {}

// Use ...@selector(addAction:)...

答案 1 :(得分:1)

在某些情况下,冒号的数量可以确定参数。例如,如果传入一个冒号的动作方法,它将发送sender作为第一个参数。如果你传入一个带有两个冒号的选择器,你也会获得event。显然,没有冒号意味着没有争论。