release 和 drain

drain:

In a reference-counted environment, releases and pops the receiver; in a garbage-collected environment, triggers garbage collection if the memory allocated since the last collection is greater than the current threshold.

release

Decrements the receiver’s reference count. (required)
在一个garbage collected(垃圾收集)环境里,release不做任何操作。 NSAutoreleasePool因此提供了一个 drain 方法,它在reference-counted(引用计数)环境中的行为和调用release一样, 但是在一个garbage collected(垃圾收集)环境中则触发garbage collection(垃圾收集)动作 (if the memory allocated since the last collection is greater than the current threshold)。 因此通常你应该使用drain而不是release去释放一个autorelease pool。

原文地址:https://www.cnblogs.com/hgy413/p/3693560.html