1.类用于描述客观世界中某一类对象的共同特征,而对象则是类的具体存在。
2.面向对象的三大特征:封装,继承,多态。
3.alloc是Objective-C的关键字,该关键字负责为该类分配内存空间,创建对象。Init是默认的初始化方法,负责对实例执行初始化。
4.FKPerson * person = [[FKPerson alloc] init];==后面的代码创建了一个FKPerson实例,这个实例赋给了FKPerson *类型的person变量。FKPerson实例存放在堆内存中,person变量存放的是一个地址值。
5.封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。为了实现良好的封装,需要1.将对象的成员变量和实现细节隐藏起来,不允许外部直接访问。2.把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。
6.键值编码(KVC)与键值监听(KVO),键值编码就是允许以字符串形式间接操作对象的属性。当需要随着某个属性的改变而改变时,用键值监听实现。
7.类调用alloc的作用:1.系统为该对象的所有实例变量分配内存空间。2.将每个实例变量的内存空间都重置为0.仅仅分配内存空间的对象还不能使用,必须对对象执行初始化,才可以使用,不执行初始化调用对象方法时会出现未知的结果。
8.继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Objective-C的继承具有单继承的特点,每个字类只有一个直接父类。从子类角度看,子类扩展了父类;但从父类的角度看,父类派生了子类。子类包含父类同名方法的现象被称为方法重写,也被称为方法覆盖。
9.super是Objective-C提供的一个关键字,super用于限定该对象调用它从父类继承得到的属性或方法。
10.子类接口部分定义的成员变量都不允许与父类接口部分定义的成员变量重名。
11.Objective-C指针类型的变量有两个:一个是编译时的类型,一个是运行时的类型。编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际付给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。 相同类型的变量调用同一个方法时呈现出多种不同的行为特征,这就是多态。一般场景是用子类名实例化,用父类指针接收。
12.当Objective-C程序直接使用行如@"hello"的字符串直接量时,系统将会使用常量池来管理这些字符串。常量池保证相同的字符串直接量只有一个,不会产生多个副本。即NSString * s1 = @"hello"; NSString * s2 = @"hello":,s1和s2的指针地址完全相等。当使用对象方法或者实例方法创建字符串对象时,对象会被保存到堆内存中。
13.当需要为已有的类扩展一些新的行为时,最容易想到的就是继承。如果继承无法实现,则可以使用类别。
14.协议是Objective-C的一个重要知识点,其作用类似于接口,用于定义多个类应该遵守的规范。协议不提供任何实现,协议体现的是规范和实现分离的设计哲学。让规范和实现分离正是协议的好处,是一种松耦合的设计。
15. 协议支持多继承。
16. 当我们设计通用框架时,框架的代码无法预知被调用的组件的实现类、具有哪些方法,这些信息可能会通过配置文件给出,所以框架就必须动态的根据字符串来创建对象,根据字符串来决定调用哪个方法,这些功能都必须借助Objectice-C的反射,动态机制来实现。
网友评论