对于主管:在我决定提问之前,我已经搜索了很多 这个问题,但我找不到我想要的东西。
我的问题是:使用NotificationCenter
和使用Closures
在两个实例之间进行通信之间哪个更好?
如果它们相似,我应该使用什么?
希望这个例子可以帮助您更好地理解: -
如果我们以URLSession
类为例。为什么它的大多数方法都有闭包?他们为什么不在其中发送Data, Response, and Error
的通知?
我知道它们之间的区别,我只是不知道在什么情况下我应该使用它们。
答案 0 :(得分:4)
在某些情况下,模式是可以互换的:
您可能会问自己为什么我们在简单案例中使用闭包而不是委托或通知。答案是闭包是最轻量级的。它们易于创建,并且会对代码质量产生积极影响。
让我们考虑完成回调。如果您决定使用通知,则需要另一种方法来处理该通知。这对代表也是有效的。如果您需要某些上下文(例如触发操作的参数),则需要将其保存到属性中。
另一方面,可以内联创建闭包。这意味着触发操作并处理其结果的代码位于一个地方。这确实简化了代码的结构。另请注意,如果闭包需要一些上下文,它可以捕获它,而无需创建其他属性。