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

发布于 2024-12-03 04:34:28 字数 406 浏览 0 评论 0原文

我想知道:编写不带冒号的选择器名称 @selector(mySelector) 或使用冒号的 @selector(mySelector:) 有什么区别?

就像:

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

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

I was wondering: what's the difference between writing a selector name with no colon @selector(mySelector), or @selector(mySelector:) with the colon?

As in:

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

I can't find another example without the colon, but I'm quite sure I have already seen some of them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伴我老 2024-12-10 04:34:28

当且仅当该方法接受参数时,方法名称后面需要冒号。

无函数参数:

-(void)addAction {}

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

有参数:

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

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

The colon is needed after the method's name if and only if the method takes an argument.

No function parameters:

-(void)addAction {}

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

Has parameter:

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

// Use ...@selector(addAction:)...
三生路 2024-12-10 04:34:28

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

In certain cases, the number of colons can determine arguments. For example, if you pass in an action method with one colon, it'll send the sender as the first argument. If you pass in a selector with two colons, you'll get the event as well. No colon means, obviously, no arguments.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文