object c中 new和alloc区别
2015-07-25 15:53
525 查看
在object-c基础教程这本书里老是可以看见类似下面这种代码,我这小菜鸟就纳闷了,啥区别啊,看上去都一样么。网上找了找,找到一些说法,这里先摘出来。
className* object = [className new];
or
className* object = [[className alloc] init];
背景说明,new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写法,保留new一是向后兼容,二是很多时候是一种更简单的写法。其实是一样的,new在内部调用的alloc和init.
源代码:
[className new]基本等同于[[className alloc] init]. 区别只在于alloc分配内存的时候使用了zone,这个zone是个什么东东呢?它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度.
什么要把alloc 和init 分开?
1. 可以使用多种init方法
2. 显示调用总比隐式调用要好”
如果确实不需要用其他的init函数,比如initWithString, 只是使用 [Nsobject alloc] init] ,那用new的方法更加方便
* new doesn't support custom initializers (like initWithString)
* alloc-init is more explicit than new
===========================================
className* object = [className new];
or
className* object = [[className alloc] init];
背景说明,new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写法,保留new一是向后兼容,二是很多时候是一种更简单的写法。其实是一样的,new在内部调用的alloc和init.
源代码:
[className new]基本等同于[[className alloc] init]. 区别只在于alloc分配内存的时候使用了zone,这个zone是个什么东东呢?它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度.
什么要把alloc 和init 分开?
1. 可以使用多种init方法
2. 显示调用总比隐式调用要好”
如果确实不需要用其他的init函数,比如initWithString, 只是使用 [Nsobject alloc] init] ,那用new的方法更加方便
* new doesn't support custom initializers (like initWithString)
* alloc-init is more explicit than new
===========================================
相关文章推荐
- 关于Objective-C格式化处理相关规范
- Objective-C面向对象-对象和类
- javascript笔记07:使用Object类为实例定义方法和属性
- Object-C 内存管理模式初探(一)
- Fit_primitives_object_model_3d.hdev相关例程学习
- Objective-C设计模式——桥接Bridge(接口适配)
- 挖一挖C#中那些我们不常用的东西之系列(4)——GetHashCode,ExpandoObject
- javascript Object的长度
- Objective-C学习笔记(二十七)——方法的重载与重写
- Objective C Bridging header —— swift MD5
- Objective-C学习笔记(二十六)——成员变量的继承学习
- kvc和字典在创建键值对时的相同与区别(setValue forKey )(setObject forKey)
- 【iOS开发之Objective-C】单例的创建
- Objective-C学习笔记(二十五)——属性与方法的继承学习
- Objective-C学习笔记(二十四)——成员变量的访问修饰符学习
- pyqt的setObjectName()/findChild()
- Objective-C学习笔记(二十三)——面向对象之封装
- Objective-c的MD5/SHA1加密算法的实现
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- 黑马程序员_Objective-C语言_继承和多态