OC学习笔记 (10-15-18)

来源:互联网 发布:中国10月经济数据 编辑:程序博客网 时间:2024/06/06 06:30

1.self在对象方法中的使用


2.self在类方法中的使用

self不指向当前对象,指向类的地址 [p class]可以返回类的地址

在类方法中self不能调用对象方法


3.self修改变量

在set方法中如果形参和实例变量同名,用self调用实例变量(self->)访问


4.继承派生


在实例变量声明的时候 ,在不使用关键修饰的情况下,变量默认是protected类型


public  : 公开的在对象方法,类方法,对象都能进行访问


private:只能在当前类中使用


protected:当前是类或子类访问


私有变量


私有方法:

1.在.h中没有声明,在.m中实现,此时该方法被称为私有方法



5.description方法


-(NSString *) description;  对象方法

+(NSString *) description; 类方法


以 “%@”打印对象的时候 ,会调用description方法(先在当前类中寻找 ,没有在向上寻找)


打印类名:NSLog(@"\n%@",[classname class]);


descripton陷阱:不要在descrition中打印self  会造成死循环



6.多态:多态就是某一类事物的多种形态


程序中的多态:不同的对象以自己的方式响应相同名称方法的能力称为多态


6.1多态的条件 

有继承关系,有方法的重写,父类的声明变量指向子类对象 


animol *dog = [animol new];


7.类的本质

类的本质其实也是一个对象(类对象)


7.1类对象

*类对象再程序运行时一直存在 

*类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本以及消息与函数的映射表等

*类对象所保存的信息在程序编译时确定,在第一次使用该类的时候被加载到内存中

*类对象代表类,class代表类对象,类方法属于类对象

*如果消息的接收者是类名,则类名代表类对象

*运行时,所有类的实例都由类对象生成,类对象会把实例的isa的值修改成自己的地址,每个实例的isa都指向该实例的类对象,

*从类对象里可以知道父类信息,可以响应的方法等

*类对象只能使用类方法,不能用实例方法


7.2类对象的获取方法

类对象属于Class类型


Class c1 =[d class]

Class c2  = [d1 class]


通过类名来获取类对象


Class c3 = [dog class]


7.3类对象的使用

************************************


***********************************


8.SEL类型


person *p = [person new ]

[p test]

==


SEL  s1 = selector(test);

[p performSelector:s1]



9.类对象的存储细节


**************

0 0
原创粉丝点击