OC的对象和消息
在OC中,方法的调用被称作是想这个对象发送消息。语法是:
不但如此,OC中还允许嵌套消息。前提是这个消息返回这个类的对象。例如:
在OC中,类中的方法和C语言的函数一样,也是可以带有参数的,只是OC的语法和C的不同罢了。在OC中,声明一个消息(方法)的语法为:
注意:上面这两个消息虽然只是前边的符号不同,但是也得看作是两个方法,“-”创建的方法叫做“对象方法”,而“+”创建的方法叫做“类方法”。两者的区别在于“+”是直接向类名发送消息,而“-”是向对象发送消息 例如你有一个Person类,用Person类创建了一个per对象。如果你想发送“+”消息,写法:
另外需要注意的是,在每个参数前都要有冒号,提醒编译器我要传入一个参数。
对于消息的参数顺序,参数顺序不同的两个消息之间没有关系,当你要发送消息时,要注意参数的顺序,顺序不同,发送的消息不同。
OC中,如果要使用某个类的对象方法或者函数时,就要先声明一个这个类的对象,并进行初始化。
不同的类可能其中会含有不同的初始化方法,同一个类也可能会有不同的初始化方法,所以我们在初期使用他人提供的类时,要注意看类中是否包含供我们使用的初始化方法。
如果需要我们自己进行初始化对象时,我们可以采用这种方法:
[对象名 消息名]
例如:id obj; //创建一个对象 [obj msg]; //发送消息
在OC中有一种特殊的数据类型id,这种类型的变量可以存放任何数据类型的对象,在开发过程中你自然会体会到它的厉害。其中,obj是一个类声明的对象,msg是这个类中具有的方法,[obj msg]的意思是想obj这个对象传递msg消息。
不但如此,OC中还允许嵌套消息。前提是这个消息返回这个类的对象。例如:
obj3=[[[obj msg] msg] msg];其实是这样的:
obj1=[obj msg]; obj2=[obj1 msg]; obj3=[obj2 msg];
在OC中,类中的方法和C语言的函数一样,也是可以带有参数的,只是OC的语法和C的不同罢了。在OC中,声明一个消息(方法)的语法为:
-(返回类型)msgWithName:(参数类型)参数1 withAge:(参数类型)参数2 ……
或者:+(返回类型)msgWithName:(参数类型)参数1 withAge:(参数类型)参数2 ……
注意:上面这两个消息虽然只是前边的符号不同,但是也得看作是两个方法,“-”创建的方法叫做“对象方法”,而“+”创建的方法叫做“类方法”。两者的区别在于“+”是直接向类名发送消息,而“-”是向对象发送消息 例如你有一个Person类,用Person类创建了一个per对象。如果你想发送“+”消息,写法:
[Person msgWith…]另一种消息的写法是:
[per msgWith…]简单的说,就是“-”形式的方法用对象调用,“+”形式的方法用类名调用。
另外需要注意的是,在每个参数前都要有冒号,提醒编译器我要传入一个参数。
对于消息的参数顺序,参数顺序不同的两个消息之间没有关系,当你要发送消息时,要注意参数的顺序,顺序不同,发送的消息不同。
OC中,如果要使用某个类的对象方法或者函数时,就要先声明一个这个类的对象,并进行初始化。
不同的类可能其中会含有不同的初始化方法,同一个类也可能会有不同的初始化方法,所以我们在初期使用他人提供的类时,要注意看类中是否包含供我们使用的初始化方法。
如果需要我们自己进行初始化对象时,我们可以采用这种方法:
[[类名 alloc] init];
其中alloc是对这个类对象分配内存空间,而init是对这个对象中具有的属性进行初始化(OC特有的数据类型默认为null,就是没有的意思,C语言数据类型中,字符串默认为空,数值默认为0)。