在我们开发过程中,经常用的alloc init,那他们具体做了些什么工作了呢?
下面我们先看看alloc的流程图
- 申请内存空间
- 绑定isa
init 又做了什么工作呢
+ (id)init {
return (id)self;
}
- (id)init {
return _objc_rootInit(self);
}
id _objc_rootInit(id obj)
{
// In practice, it will be hard to rely on this function.
// Many classes do not properly chain -init calls.
return obj;
}
从源码里,我们可以看出,init,其实什么也没有做,那为什么还要设计这样的接口呢? 从设计模式上来讲,这样做是为了让子类统一在这里初始化一些属性,也即是工厂模式的运用。
总结
ios底层alloc,主要做了申请内存和绑定isa,而init直接返回对象本身,具体的alloc申请的时候,申请内存的大小是多少呢,要绑定的isa又是什么,下篇文章,继续学习