您的位置:首页 > 移动开发 > IOS开发

ios-关于new和alloc init的区别

2017-07-10 15:51 375 查看
关于new和alloc init的区别其实一开始我也很蒙,甚至不知道这个new在这里起什么作用,但是一查阅了资料后发现,其实二者没有什么太大的区别,概括来说,new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。差别在于,采用new的方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法,alloc使用了Zone 分配的内存会和相关联的对象在内存地址中相靠近,利于内存读取 Zone它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度;NSZone原本是用于维护一块用于对象内存分配及释放的内存池的描述信息,进程默认的NSZone是在启动的时候创建并将随后所有的对象均分配在这里,也因此在做了大量的分配及释放对象内存之后,可能会产生很多的内存碎片,在做新的内存分配的时候NSZone会试图去填补这些碎片,即从碎片中找到合适的内存区块以存放新的对象,这个查找的过程是需要时间开销的,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: