内存管理讲究“好借好还再借不难”

在不需要立即回收对象的情况下,应该使用autorelease。
与此相对,如果需要立即释放对象应该使用release。

像作为返回值的对象这样的,是需要被调用方调用的,所以在该对象生成完返回,并在被调用之前这段时间内是没有人调用它的,但是不能释放它,所以在这种情况下它需要被autorelease。

再说得通俗一点就是autorelease可以延迟释放。

作者举的例子是一个非常简单的方法,方法里面有个局部对象。我在想这个方法调用完以后不就被弹出调用栈了嘛,里面的局部变量不就自行销毁了吗。为啥作者说会导致内存泄漏呢?
我想大概是因为Objective-C对象的实质都是指针变量,它们都是在堆上分配的内存,所以它不同于普通的栈里面的变量那样会随着调用栈中方法的弹出而被销毁吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,052评论 1 16
  • 11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什...
    AlanGe阅读 4,075评论 1 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,312评论 30 472
  • 37.cocoa内存管理规则 1)当你使用new,alloc或copy方法创建一个对象时,该对象的保留计数器值为1...
    如风家的秘密阅读 4,367评论 0 4
  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 7,528评论 2 26