シングルトンの例に関するAppleのドキュメントでは、猫の皮を剥ぐ方法が複数あることは理解していますが、インスタンスが静的として登録されていることを確認するのはなぜですか?
私が言及しているのは:
static MyGizmoClass * sharedGizmoManager = nil;
シングルトンの例に関するAppleのドキュメントでは、猫の皮を剥ぐ方法が複数あることは理解していますが、インスタンスが静的として登録されていることを確認するのはなぜですか?
私が言及しているのは:
static MyGizmoClass * sharedGizmoManager = nil;
定義されているファイルの外部から変数にアクセスできないようにするためだと思います。それ以外の場合は、グローバルにアクセスできます。
これにより、クライアントはシングルトンにアクセスするために-(id)sharedObjectを使用する必要があります。
上記の答えは正しいです。シングルトンの変数を static として宣言することは、それを含むファイルのローカルスコープにのみ存在することを意味します。これはまさにあなたが望むものです。これの一部は、このシングルトン モデルが最初の使用時にシングルトンを作成するために遅延読み込みに依存しているためです。これの一部は、メモリ内のシングルトンを失う可能性のあるポインターへの外部アクセスを望まないためです。作成されると、そもそもすべてが無意味になります。