5

@selector(mySelector)我想知道:写一个没有冒号或冒号的选择器名称有什么区别@selector(mySelector:)

如:

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

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

4

2 回答 2

14

当且仅当方法带有参数时,方法名称后才需要冒号。

无函数参数:

-(void)addAction {}

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

有参数:

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

// Use ...@selector(addAction:)...
于 2011-09-05T16:05:42.887 回答
1

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

于 2011-09-05T16:10:17.950 回答