美文网首页
OC_alloc和New方法的区别,以及其它初始化方法的区别

OC_alloc和New方法的区别,以及其它初始化方法的区别

作者: Init_ZSJ | 来源:发表于2017-03-18 23:40 被阅读0次

    序言:翻阅资料,学习,探究,总结,借鉴,谢谢探路者,我只是个搬运工。
    参考、转发资料:
    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方法创建的对象是加入到自动释放池当中的,自动释放池什么时候释放,变量就什么时候释放。

    相关文章

      网友评论

          本文标题:OC_alloc和New方法的区别,以及其它初始化方法的区别

          本文链接:https://www.haomeiwen.com/subject/tpbjnttx.html