2011-12-11 10 views
4

をスーパークラスのインスタンスメソッドの中で呼び出すと、サブクラスごとに1回実行されますか?私は、Xcode Grand Central Dispatch(GCD)リファレンスが「アプリケーションの存続期間中にブロックオブジェクトを1回だけ実行する」と言っているからではないと推測しています。スーパークラスのディスパッチ_オン?

答えて

4

マニュアルの読者が正しいです。そのブロックは、同じ1回トークンを使用している場合に限り、1回だけ実行されます。

3

ドキュメントの読者はほぼ正しいです:dispatch_once()は、指定されたdispatch_once_t変数の存続期間中に1回だけ実行されます。ほとんどのアプリケーションはこの変数を静的なグローバルとして宣言しているため、ドキュメントはこのパターンをカバーしています。トークンが各クラスインスタンスに対して一意であり、正しく初期化されていない場合は、インスタンスごとにトークンが実行されます。

関連する問題