您当前的位置:首页 > 计算机 > 编程开发 > C语言

OC的对象和消息

时间:01-03来源:作者:点击数:

在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)。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门