0

いくつかの ViewController で使用するメソッドを集中化する方法を見つけようとしています。いくつかの変数に使用していたシングルトンがすでにありました。シングルトン クラスを Shared と呼びました。

メソッドを Shared クラスに移動し、次のように呼び出してみました。

m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];

セレクターを呼び出そうとすると、セレクターが存在しないという例外が発生します。

すでに Shared.h をインポートしています。他の考えをいただければ幸いです。

4

2 に答える 2

1

クラスの名前が「Shared」の場合、インスタンス メソッドではなくクラス メソッドを呼び出そうとしているように見えます。したがって、- の代わりに + を使用してメソッドを宣言する必要があります。

于 2011-04-30T13:21:00.707 に答える
0

ここに、objective-c でシングルトンを作成するための正しいパターンがあります: (ユーザー オブジェクトの例を使用します。目の前で開いたコードから取得します)。また、ここで説明するように、シングルトン クラスと静的クラス メソッドには違いがあることに注意してください。静的クラスとシングルトン パターンの違いは?

.h ファイルで、クラスのインスタンスを返す静的メソッドを宣言します。

+(User *) currentUser;

.m ファイルで、インスタンスを保持する静的変数を作成します

static User * _user;

次に、.m クラスで、静的変数を返すかインスタンス化して返す「パブリック」静的アクセサー GET を作成します。

+ (User *) currentUser
    {

        if (!_user) 
        {
            _user =[[User alloc]init];
            // ... init the singleton user properties and what not
            // ...
        }

        return _user;   

    }

次に、Singleton クラスを呼び出したい場合は、User.h がインポートされていることを確認して呼び出し[[User currentUser] someMethodorProperty]ます。

楽しい

于 2011-04-30T13:20:45.343 に答える