writer:lIcht email:lIcht.gzl@gmail.com date: 2021.7.21
ios创建对象的时候可经常使用的三个写法:
//alloc方法
LGperson *p1 = [LGperson alloc]
//init方法
LGperson *p1 = [LGperson init]
//new方法
LGperson *p2 = [LGperson new]
三者在使用上的区别:
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的方式。