次のように私はシングルトンクラスを実装しています:iPhoneで予期しないシングルトンクラスの動作が発生しました。何か間違っていますか?
static Singleton* _singletonInstance;
@implementation Singleton
+(void)initialize
{
_singletonInstance = [[Singleton alloc] init];
}
+(Singleton*)instance
{
return(_singletonInstance);
}
だけで、誰かがインスタンスを呼び出し初めて呼び出される初期化します。私はいくつかのインスタンス変数を設定するために呼び出すことができるメソッドを持っています。だからこのように見える。私は、オブジェクト内でこのシングルトンのインスタンスを取得する場合
_singleton = [Singleton instance];
[_singleton setupWithParams: blah];
は、それが初めて正常に動作します。しかし、私がdeallocし、シングルトンのインスタンスを必要とするオブジェクトの新しいコピーを作成した後、私はセットアップ機能を呼び出そうとするとBAD ACCESSエラーが出ます。
セットアップコールを行う前に、私はインスタンスのアドレスを出力し、両方の時間に同じアドレスを報告しますが、BAD ACCESS呼び出しのエラーログをチェックすると、完全に異なるメモリアドレスがリストされます。
私はそれを印刷すると、このポインタがうまく見えるように見える理由は誰にもありますが、それを呼び出すと、一見ランダムなデータを指していますか?
ありがとう、それはまさにそれでした。クラスはもともと普通のクラスで、私は昨夜それをSingletonに変えました。私がinstatiation呼び出しを置き換えている間、私は完全にリリース呼び出しを削除するのを忘れてしまった。 – Skyler