方法名、选择器、消息、参数名的概念解释

当你发送一条消息的时候就相当于调用一个方法,也就是通知消息接收方执行一个方法,消息发送必须写在一对方括号中[ ],并且必须包含接收方(receiver) 和 选择器 (selector)
 如:

NSDate *now = [NSDate  date];

向NSDate 类 发送一个消息,让它执行date方法(方法名是date),消息接收方是一个NSDate类,向一个类发送消息,执行的是类方法。
注意:如果NSDtate类没有date方法,编译器提示。

[ now   dateByAddingTimeInteval: 1000] ;

向一个NSDate类的实例now发送一个消息,让它执行   dateByAddingTimeInteval:  ( 方法名是 dateByAddingTimeInteval: )。
注意:当发送的消息让接受方执行一个带有参数的方法时,需要注意一些名词概念。这里的方法名是需要带“:”的,冒号是组成带有参数方法的必要组成部分。

[cal ordinalityOfUit:NSDayCalendarUnit
                   inUnit :NSMonthCalendarUnit
                  forDate:now];


cal是NSCalendar实例,now是一个NSDate实例。
这是一个传递三个实参的消息,让它执行   ordinalityOfUit: inUnit : forDate: 方法 。(方法名是  ordinalityOfUit: inUnit : forDate:)。这个方法有三个参数,所以它的名字有三部分组成,但是它只是一条消息,只能触发一个方法。

参数名是否是方法名的一个组成部分??

//声明一个方法

@interface C : NSObject
+(int) fun: (int) a second: (int) b;
@end

//实现一个方法

@implementation C
+(int) fun: (int) a second: (int) b
{
    return a * b;
}
@end

//向这个方法发送一条消息

int a = [C fun: 2 second: 3];


这里书上(《Objective-C程序设计》第六版)把second称为第二个参数的参数名,那么b是什么?
我们暂且可以把second 理解是第二个参数的一个格式占位符。(个人觉得,这里引入占位符,且你可以自主命名这个占位符
是为了可以让代码具有更好的可读性,这里的占位符不是必须的)

在实现的时候,这里所谓的参数名是可以省略的,真正有用的是后面的b。在编写新方法的时候,省略参数名不是一种好的习惯。
所以参数名是方法名的一部分。这里的参数名可以理解成一个占位符。

最后来说选择器,在明白以上消息、方法名的概念后,选择器就很好理解了。

选择器(Selector):就是要触发的方法的方法名。




我的第一篇blog。逻辑不够清晰。排版也不好,是从印象笔记上,粘过来的。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值