Person *p3 = [Person new] 等价与下面的




构造方法: 用来初始化对象的方法,是个对象方法, -开头; 创建对象后就可以直接赋值
如下为重写init格式 记住就行!!!
分类:Category
1.可以给某一个类扩充一些方法(不修改原来类的代码)
2.作用: 在不改变原来类内容的基础上,可以为类增加一些方法.
使用注意: 1.分类只能增加方法,不能增加成员变量.
2.分类方法实现中可以访问原来类中的成员变量.
3.分类可以重新实现原来类中的方法,但会覆盖掉原来的方法,会导致原来的方法没法再使用
4.方法调用的优先级:分类(最后参与编译的分类优先) —>原来类 —>父类
//声明
@interface Person(分类名称)
@end
//实现
@implementation Person(分类名称)
@end
类的本质
类也是个对象
- 其实类也是一个对象,是Class类型的对象,简称“类对象”
- Class类型的定义
- 类名就代表着类对象,每个类只有一个类对象
类的深入研究 : 用如下两个方法可以监听类的使用情况
load方法:
1.当程序启动的时候,就会加载一次项目中所有的类和分类,类加载完毕后就会调用每个类和分类的+load方法,只会调用一次.
2.先加载父类,再加载子类(先调用父类的+load方法,在调用子类的+load方法)
initialize(初始化) 方法:
1.当第一次使用某个类的时候 ,就会调用一次+initialize方法.
2.先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)