在WWDC 2012核心数据最佳实践视频中,该人声称performBlockAndWait:不包含自动释放池。 (而performBlock:确实如此)
为什么不呢?究竟是什么后果呢?我是否需要将块内容包装在自动释放池中 - 所有Apple示例都不会这样做。或者他的观点是对比performBlock:这不需要一个。
答案 0 :(得分:2)
bandejapaisa,
A -performBlockAndWait:从周围的自动释放池中获益。 (-performBlockAndWait:似乎直接在当前线程上执行。)因此,它不需要自己的自动释放池。
安德鲁
答案 1 :(得分:0)
performBlockAndWait:
是可重入的。它不提供自动释放池或处理用户事件(它不调用processPendingChanges
),并在由上下文队列管理的线程上执行。
因为它是可重入的,所以它会阻塞调用线程直到完成。此行为与自动释放池和Core Data用户事件都不兼容,这就是它不使用它们的原因(performBlock:
})。