iOS开发new与alloc/init的区别
2016-08-01 15:16
399 查看
http://mobile.51cto.com/hot-404891.htm
[className new]基本等同于[[className alloc] init];
区别只在于alloc分配内存的时候使用了zone.
这个zone是个什么东东呢?
它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度;
不知大家发现了没有:如果使用new的话,初始化方法被固定死只能调用init.
而你想调用initXXX怎么办?没门儿!据说最初的设计是完全借鉴Smalltalk语法来的。
传说那个时候已经有allocFromZone:这个方法,
但是这个方法需要传个参数id myCompanion = [[TheClass allocFromZone:[self zone]] init];
[className new]基本等同于[[className alloc] init];
区别只在于alloc分配内存的时候使用了zone.
这个zone是个什么东东呢?
它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度;
不知大家发现了没有:如果使用new的话,初始化方法被固定死只能调用init.
而你想调用initXXX怎么办?没门儿!据说最初的设计是完全借鉴Smalltalk语法来的。
传说那个时候已经有allocFromZone:这个方法,
但是这个方法需要传个参数id myCompanion = [[TheClass allocFromZone:[self zone]] init];
相关文章推荐
- iOS开发 new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发之new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发之new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- [转]iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别
- iOS开发new与alloc/init的区别