超级中的dispatch_once?

时间:2011-12-11 14:15:54

标签: ios grand-central-dispatch

如果我在超类的实例方法中调用dispatch_once,它会为每个子类执行一次吗?我猜不是因为Xcode Grand Central Dispatch(GCD)参考文献说它“在应用程序的生命周期内执行一次一次且只执行一次。”

2 个答案:

答案 0 :(得分:4)

您阅读文档是正确的。只要您使用相同的一次令牌,该块将只执行一次。

答案 1 :(得分:3)

您对文档的阅读几乎是正确的:dispatch_once()仅在给定dispatch_once_t变量的生命周期内执行一次。由于大多数应用程序将此变量声明为静态全局变量,因此文档涵盖了此模式。如果你有一个对每个类实例都是唯一的标记,并且正确地从零初始化开始,那么它将为每个实例执行。