黑马程序员技术交流社区

标题: new和alloc init的区别以及各自的好处? [打印本页]

作者: 张中付    时间: 2015-8-24 22:58
标题: new和alloc init的区别以及各自的好处?
new和alloc init的区别以及各自的好处?
作者: 294250051    时间: 2015-8-24 23:17
其实在以后,我们就渐渐的使用 [[className alloc] init];而根本不去用 [className new];了,这两者基本等同。
你可以去查一下源码:区别只在于alloc分配内存的时候使用了zone,zone是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。而且话说回来,初始化的方式并不是只有init一种啊,你用new的话局限于init一种方法。看你理解咯~

作者: 胥鹏飞    时间: 2015-8-24 23:58
目前可以看成是一样的
作者: 张中付    时间: 2015-8-25 08:33
294250051 发表于 2015-8-24 23:17
其实在以后,我们就渐渐的使用 [[className alloc] init];而根本不去用 [className new];了,这两者基本 ...

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

恩恩,慢慢地就要用alloc init来初始化,这样一开始有选择的初始化对象
作者: 毛强    时间: 2015-8-25 09:10
一个可以重写构造方法,初始化自己想要的属性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2