为什么我们需要为每个线程使用NSAutoreleasepool?

Kri*_*nan 5 objective-c nsautoreleasepool ios

在iOS应用程序开发中,我们将NSAutoreleasePool在以后放弃对象的所有权.

但为什么它可以在不同的线程之间共享?

当我想使用新线程时,为什么我们需要创建一个新的自动释放池?

编辑:

正如taskinoor提到的,我的问题是为什么这个设计的方式是每个线程应该有一个单独的自动释放池.

Jef*_*mas 5

多线程自动释放池的设计挑战是何时排空它们.如果在对象仍在使用时排空池,则会崩溃.每个线程,很容易判断您何时在运行循环之外,因此可以排出自动释放的对象.在多线程情况下,您的线程需要在其runloop结束时进行同步,以便确保您处于安全点以排空它们.以这种方式同步踏板是一个坏主意,它会产生大量的空闲时间并减慢程序的速度.