iOS new与alloc/init介绍

来源:互联网 发布:淘宝自动回复怎么修改 编辑:程序博客网 时间:2024/05/19 18:00
+ new { id newObject = (*_alloc)((Class)self, 0); Class metaClass = self->isa; if (class_getVersion(metaClass) > 1) return [newObject init]; else return newObject; }   + alloc { return (*_zoneAlloc)((Class)self, 0, malloc_default_zone());  } - init { return self; } 

上述是apple文档中new和alloc/init方法的具体实现。

个人笔记:

alloc:分配内存;init:初始化;new:分配内存,并隐性地初始化

new大体等同与alloc+init;只是alloc时使用了Zone;

new是老版使用的方法,后来apple引进allocWithZone:方法,apple为了方便,又重新封装成了alloc方法;

注意:

new是很方便,但初始化只能使用init,比如要使用自定义的initWithXXX就会报错;

alloc则可以使用自定义的初始化方法;

0 0
原创粉丝点击