思路分析:Person是个类,[Person alloc] 是类在调方法,顾名思义alloc就是一个对象方法,那么alloc是哪里来的呢?因为所有类都继承自NSObjcet,所以alloc是从NSObject里面来的,同理init也是来自NSObject,可以跳到NSObject这个头文件去看
完整的创建对象有两步[Person new]中的new创建的对象太死板,里面直接做了alloc 和init这两步
1. 分配了存储空间 ([Person alloc]其实是Person调用了它的类方法,当调用alloc的时候,此时,马上会返回一个有存储空间的对象给你,分配的这块存储空间里面全部是0,这个是不能用的,为什么?因为没有初始化,这就是需要引用到init的作用。)
2. 初始化 (上面说了init的由来,所以所有的类都有一个默认的初始化方法init, 当调用了init之后就把这块空间给初始化了,这个对象就可以用了,但是它是最基本的初始化,里面还仍然全部是0)。因此,这也是我们为什么有时候要重写init构造方法的原因,就是在创建好对象之后,让这个区域里面不是0;
|
|