A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

new和alloc init的区别以及各自的好处?

5 个回复

倒序浏览
其实在以后,我们就渐渐的使用 [[className alloc] init];而根本不去用 [className new];了,这两者基本等同。
你可以去查一下源码:区别只在于alloc分配内存的时候使用了zone,zone是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。而且话说回来,初始化的方式并不是只有init一种啊,你用new的话局限于init一种方法。看你理解咯~
回复 使用道具 举报
目前可以看成是一样的
回复 使用道具 举报
294250051 发表于 2015-8-24 23:17
其实在以后,我们就渐渐的使用 [[className alloc] init];而根本不去用 [className new];了,这两者基本 ...

嗯,new的时候只是init,如果使用[[classname alloc]  init]中init可以换成其他的构造函数,可以有选择的,你说的zone第一次听说,不管new还是alloc init 他们不都是创建对象时候在堆里给对象分配空间吗
回复 使用道具 举报
胥鹏飞 发表于 2015-8-24 23:58
目前可以看成是一样的

恩恩,慢慢地就要用alloc init来初始化,这样一开始有选择的初始化对象
回复 使用道具 举报
一个可以重写构造方法,初始化自己想要的属性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马