多类的设计

来源:互联网 发布:js null undefined 编辑:程序博客网 时间:2024/06/05 16:56

1.self在oc中

1.>self 是一个指针,在每一个方法中都有一个self指针

2.>self可以出现在所有方法中(对象的方法和类的方法),不能在函数中

3.>self 指向调用者(谁调用它就指向谁)

4>可以使用 self->成员变量 访问成员变量,可以使用[self方法名]调用方法 

self是类隐藏的参数,指向当前当前调用方法的类,另一个隐藏的参数是_cmd,它代表当前类方法的selector。这里只关注这个self。super 是个啥,并不是隐藏的参数,他只是一个编译器指示符,他和self指向的是相同的消息接受者,那上面的代码为例,不论是用[self setName]还是[super setName],接受setName这个消息的接受者都是PersonMe *me 这个对象,不同的是super 告诉编译器,当调用setName的时候,要去调用父类的方法,而不是本类里面的。而当使用self调用方法时,会从当前的方法列表中开始查找,如果没有的话,就去父类的方法中开始查找。而super直接开始在父类的方法中开始查找。

2.id类型

id obj ;id就相当于C语言中的void * 是个泛指针类型

id只能指向对象, obj 可以指向任意类型的对象。

一、加方法和减方法的区别

1>加方法不能访问成员变量 减方法里可以访问成员变量

2>在加方法里面 self就是当前的类
3>
self在减方法里面是指向对象
4>加方法只能是类调用

5>减方法是对象调用

6>在减方法里面不能用 self调用加方法 

7>在加方法里面不能用 self调用减方法

8>在加方法里面想调用减方法 需创建对象再用这个对象来调用

9>减方法/实例方法 对象调用的方法
10>加方法/类方法 类调用的方法

11>除了方法类型不同外,加方法和减方法的声明没有任何区别

二、加方法的作用
1>可以简洁或快捷的创建一个对象 二次封装

2>给外部提供一个简单易用的接口

3>创建单例对象(它存储的数据被全局(所有的文件)所共享) 


0 0
原创粉丝点击