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>创建单例对象(它存储的数据被全局(所有的文件)所共享)