序言:翻阅资料,学习,探究,总结,借鉴,谢谢探路者,我只是个搬运工。
参考、转发资料:
http://blog.csdn.net/wangjiwei2010/article/details/47057127
new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写法,保留new一是向后兼容,二是很多时候是一种更简单的写法。其实是一样的,new在内部调用的alloc和init.
- alloc方法是给类分配内存空间(通过malloc方法)。
- init方法初始化
- new是结合了alloc,隐士的调用了init方法。
[className new]基本等同于[[className alloc] init],在功能上是一致的,当我们只是为了使用init方法初始化时,都一样,new是隐士的调用了init方法,所以固定死了一个初始化方法为init,而alloc方法可以我们随意的使用initXXX方法。
区别只在于alloc分配内存的时候使用了zone,这个zone是个什么东东呢?它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。什么要把alloc 和init 分开?
- 可以使用多种init方法
- 显示调用总比隐式调用要好”
alloc, copy,new创建的对象是不加入到自动释放池当中的,需要我们手动释放,而array方法创建的对象是加入到自动释放池当中的,自动释放池什么时候释放,变量就什么时候释放。
网友评论