2

在核心数据最佳实践的 WWDC 2012 视频中,该人指出 performBlockAndWait: 不包含自动释放池。(而 performBlock: 会)

为什么不?这样做的具体后果是什么?我是否需要将块内容包装在自动释放池中 - 所有苹果示例都不这样做。或者他的观点是对比 performBlock: 而这不需要一个。

4

2 回答 2

3

班德加派萨,

A -performBlockAndWait:受益于周围的自动释放池。(-performBlockAndWait: 似乎直接在当前线程上执行。)因此,它不需要自己的自动释放池。

安德鲁

于 2013-04-26T14:38:11.597 回答
0

performBlockAndWait:是可重入的。它不提供自动释放池或处理用户事件(它不调用processPendingChanges),并在上下文队列管理的线程上执行。

因为它是可重入的,所以它阻塞调用线程直到完成。这种行为与自动释放池和 Core Data 用户事件都不兼容,这就是它不使用它们的原因(而performBlock:)。

于 2014-06-17T21:13:54.893 回答