image

ios开发—alloc、init、new的区别


writerlIcht                      emaillIcht.gzl@gmail.com                 date:  2021.7.21

 

26

ios创建对象的时候可经常使用的三个写法:

三者在使用上的区别:

1、alloc

alloc会开辟内存空间,返回对象的指针。alloc开辟内存空间主要的过程包括三个:

(1)根据类的isa指针获取应该开辟内存的大小;

(2)在堆中开辟大小为(1)中的空间,返回改地址空间的指针;

(3)将(2)中返回的指针与类关联起来;

2、init

inti不会开辟新的内存空间,用法通常是在alloc之后使用init或者自定义的intiXXX方法进行构造;

3、new

new可视为alloc+init的操作,即开辟了内存空间也调用了构造方法,但是注意默认使用init的构造方法不能使用自定义的initXXX方法。如果对类的构造有重写,建议使用alloc加init的方式。