-6

次の方法でシングルトンクラスをセットアップしています

私の .h には次のコードがあります

 + (Singleton *)sharedInstance;

.m は次のようになります

+ (Singleton *)sharedInstance
{
        if (nil == sharedInstance) {
           sharedInstance = [[Singleton alloc] init];
    }
    return sharedInstance;
}

別のクラスから Singleton クラスのメソッドにアクセスしようとすると、次のエラーが発生します

  reason: '+[Singeleton myMethod:]: unrecognized selector sent to class

myMethod はシングルトン クラスに存在します。

単一クラスは ARC を使用しますが、呼び出しクラスは非 ARC です。

それがこれと何か関係があるかどうかはわかりません。

myMethod は NSNotification であり、辞書オブジェクトを送信し、通知名を使用してそのメソッドを呼び出しています。

編集:役に立たなかった他のスレッドの提案を読んで実装しようとしました。

4

1 に答える 1

3

インスタンス メソッドではなく、クラス メソッドを呼び出したようです。

だからあなたはおそらくそうしました:

[Singleton myMethod:...];

呼び出しを次のように修正します。

[[Singleton sharedInstance] myMethod:...];

編集:

おっと、さらに悪い問題に気付きました。あなたのシングルトンファクトリーは壊れています。あなたが戻っているインスタンスはありません。このバリアントを試してください。スレッドセーフではありませんが、あなたにとっては十分かもしれません。

+ (Singleton*)sharedInstance 
{
    static Singleton *instance = nil;
    if (nil == instance) 
    {
        instance = [[Singleton alloc] init];
    }
    return instance;
}
于 2013-03-15T04:37:06.047 に答える