2011-12-11 38 views
4

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

回答

4

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

3

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