OC中为什么要使用alloc/init而很少使用new
来源:互联网 发布:复方肾炎片价格淘宝 编辑:程序博客网 时间:2024/04/29 06:36
在OC中,新建一个对象可以有两种方式[class_name alloc] init]和[class_name new]那么这两种有什么区别呢,哪一个更好呢
下面我们就来探讨一下
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
以上是代码段,结果输出如下图
你会发现new方法其实内部调用了init方法,很显然在调用之前还分配了内存
其实这其中还有一个奥秘,[class_name alloc] init]在alloc的时候调用了allocWithZone分配了内存,而new只是进行了alloc(这里的alloc是内存分配的意思,不等价于alloc这个方法)。
也就是说[class_name alloc] init] 实际上做了两步allocWithZone和init,而new是进行了内存分配,然后init;[class_name alloc] init] 分配的内存会和相关联的对象在内存地址中相靠近,利于内存读取。另外[class_name alloc] init]还可以自定义init方法比如像本文中的initWithHaha:。
如果您觉得写的不错给个赞吧,毕竟原创
1 0
- OC中为什么要使用alloc/init而很少使用new
- oc中alloc和init等基本注意和使用
- OC初始化中new和alloc init的区别
- OC 中new与alloc/init的区别
- OC 中new与alloc/init的区别
- OC 中new与alloc/init的区别
- OC初始化中new和alloc init的区别
- OC中new方法与alloc+init及构造方法
- OC 中new与alloc/init的区别
- OC 中New和alloc/init的区别
- 创建对象使用 new 和 alloc init的区别
- oc的switch中使用alloc,new语法报错解决方法
- ios中alloc init new的区别
- OC-017.new和alloc init 的区别
- new alloc init
- new vs alloc init
- new alloc/init 区别
- oc中alloc和new的区别
- 日期转化为时间戳
- 1099. Build A Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise
- zendstudio10.0调试方法
- 多文件及多目录下MakeFile文件的编写
- 1019
- OC中为什么要使用alloc/init而很少使用new
- Sql 注入问题总结
- BZOJ 1003: [ZJOI2006]物流运输(spfa+dp)
- [Contiki系列论文之4]ContikiMAC RDC协议
- 优化——导出大量数据
- IntentSerivce实现原理
- Storm短暂的Worker脑裂之旅
- 正则表达式匹配
- Combination Sum III