4

[unowned self]共有シングルトン インスタンスは常に存在するため、そのシングルトン クラス内のすべてのクロージャで安全に使用できますか?

4

2 に答える 2

1

はい、シングルトンはそれ自体への強い参照を保持しており、破棄できません。

これに基づいて、弱い参照または所有されていない参照を安全に作成できると言っても過言ではありません。

アップルのドキュメントから:

クラスは、最初に要求されたときに唯一のインスタンスを遅延して作成し、その後、他のインスタンスが作成されないようにします。シングルトン クラスは、呼び出し元がインスタンスをコピー、保持、または解放することも防ぎます。

これをテストする簡単な方法は、メイン クラスからテストすることです。

  • 新しいクラス (「ファースト クラス」と呼びましょう) を作成します。このクラスは、シングルトンをいくつかの値で初期化し、一意のジョブが終了した後に破棄されます。
  • その後、メインクラスで、シングルトンインスタンスを取得してその値を読み取る別のクラス (「2 番目のクラス」と呼びましょう) を作成します。

最初の (破棄された) クラスと 2 番目の (新しく作成された) クラスの間には、シングルトンへの参照はありません。

  • ここで値を読み取り、値がまだそこにある場合は、シングルトンが独自の参照によって存続していることを証明します。
于 2015-05-29T03:13:00.130 に答える