【发布时间】:2016-02-16 08:45:25
【问题描述】:
众所周知,当没有变量引用对象时,对象不会立即在 ARC 中解除分配。例如,
NSObject* obj = [[NSObject alloc] init];
obj = nil;
obj 将在一段时间后释放。(自动释放池耗尽)。
现在,我想要 obj dealloc 在它被设置为 nil 之后立即,这意味着 obj 不在自动释放池中。但是所有其他的 obj 都应该像以前一样正常工作,这意味着程序仍处于 ARC 模式。
有没有办法(可能是宏或编译器标志)来做到这一点?
【问题讨论】:
-
分配时并不是所有的对象都会在自动释放池中移动。为此需要使用 __autoreleasing。例如 [NSArray array] 将在自动释放池中移动,但 [[NSArray alloc] init] 不会。
标签: ios objective-c automatic-ref-counting