0

アプリケーションのモジュールであるシングルトン オブジェクトがあり、このモジュール内で作成されたすべてのオブジェクトは、他のモジュールとは関係がありません。アプリケーションがこのシングルトン オブジェクトを作成し、このオブジェクトがさらにその子オブジェクトを作成します。このモジュール以外のアプリケーション内の他のオブジェクト。したがって、このモジュール タスクが終了した後、このモジュール オブジェクトを に設定しnilています。記憶に。

私のプロジェクトは完全に ARC です。では、親(singeltonオブジェクト)がに設定された後、コンパイラがsingleton子オブジェクトの割り当てを解除しない理由は何ですかnil?

前もって感謝します

4

2 に答える 2

-1

シングルトンは、その内部でさらに多くのオブジェクトを初期化し、スーパーオブジェクトを再度呼び出す場合に問題になることがよくあります。シングルトン静的変数がまだ割り当てられていないためです。

これを防ぐには、次のようにします。


シングルトンファイル

+ (SomeClass *)sharedInstance {
    if (!_someStaticInstance) {
        _someStaticInstance = [[SomeClass alloc]init];
    }

    return _someStaticInstance;
}

- (void)initialise {
    // do the real initialising here
}

それを作成するファイル

[[SomeClass sharedInstance] initialise];
于 2012-12-22T20:27:24.187 に答える