Object-C (方法和消息)

夏祯
2023-12-01
Object-C  (方法和消息)

方法和消息

方法:在object-C中有两种方法----实例方法和类方法
实例方法:作用于一些特殊类实例的方法,换句话说:你在调用一个实例方法的时候,你必须先创建类的实例,实例方法是最通用的方法。
类方法:类方法不需要对象的实例作为消息的接受者

实例方法前用(-)  类方法前用(+)

一个方法的实际名字是和其他一些关键字串联在一起的,(包括冒号),冒号后面声明了参数,在下面这个实例当中,这个方法有两个参数,如果一个方法没有参数的话,你可以省略冒号
如:-(void)insertObject:(id)anObject atIndex:(NSUInteger)index;

如果把上面的方法变成C或者C++的语法形式,则如下所示
   -(void) insertObjectAtIndex(id anObject,NSUInteger index);


如果你想要调用方法,你可以传递一个消息给这个对象来实现----换句话说就是通知那个对象,一个消息是一个方法的名字连同方法需要的参数名字(当然也得合适的类型),所有你发送给对象的参数都会被动态分配,这样可以促进类的多态(多态指的是不同类型的对象回应同一个消息)有时一个方法的调用被一个类的父类对象来接受消息。

为了发送一个消息,运行需要一个消息表达式,每个消息的表达式放在方括号[ ]里(包括参数和消息本身),为了发送一个消息,例如:要发送一个insertObject:atindex的消息给一个myArray变量保存的对象,你可以这样写:
     [myarray insetObject:anObject atIndex:0 ];

为了避免声明很多本地变量来存储临时结果,object-c可以让你构造消息表达式,每个表达式的返回值用来作为一个参数或用来接收对象啊的另一个消息。例如:你可以消息来替代任何之前例子中的变量,这样可以重新得到变量的值。
比如:你有另外一个对象叫做myAppObject方法可以访问数据对象,并且可以把这个对象插入到数组中,你可以写如下表达式
   [[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0];

点符号型语法 object-c也提供“点符号”的语法用来调用存储方法,存储方法设置或者得到对象的状态,这些都是封装的关键,也是多有对象的一个重要特点,对象隐藏或者封装,他们提供一个供所有实例访问他们状态的接口。用点符号语法,你可以把之前的例子改写成下面的格式:
  [myAppObject.theArray insertObject:myAppObject.objectToInsert atIndex:0];

你也可以用点符号型语法来定义
myAppObject.theArray = aNewArray;

但这个语法在写[myAppObject setTheArray:aNewArray]这句的时候不同,对于动态类型你不能使用“点符号”

对于方法的调用通吃也不称之为调用,而是发出消息,操作符不是“.”而是“[…]”,但在实际使用的时候,两种方法都是可以的,没有严格的划分
 类似资料: