【发布时间】:2013-03-25 17:49:39
【问题描述】:
我终于决定停止拐弯抹角,自学一些 Objective-C。这一切都是有道理的,除了当我谈到内存管理和“自动释放池”这个想法时。 据我了解,如果我专门使用 init、new、alloc 创建一个对象或告诉它保留,那么我的工作就是释放内存。但是,自动释放池会自动释放与最里面的自动释放池关联的所有对象吗? 例如,假设我这样做:
TestOBJ* foo = [[[TestOBJ alloc] innit] autorelease];
那么它会在第一个@autoreleasepool 块结束时释放,还是在第一个[autoreleasepool drain] 被调用时释放?
还有;仅仅因为一个对象是在 autoreleasepool 块中创建的,并不意味着它会自动标记为 autorelease,对吗?
【问题讨论】:
-
小修正:你说“释放内存是我的工作”。 释放内存是你的工作。这是否会导致它被释放是一个单独的问题。
标签: objective-c nsautoreleasepool