0

クラスメソッドからトリガーされているプロパティを割り当てる方法があるかのように私はちょうど興味がありますか?

元:

+ (void)asyncResponse:(NSDictionary*)response:(NSError*)error

その呼び出しで応答がありますが、NSURLConnectionこれを別のクラスで使用してそのディクショナリをプロパティとして設定しようとしていますが、これはクラスメソッドであるため、エラーが発生します。そのasyncResponseは、実行時に特定のクラスに転送するために使用している「Delegatecall」です。

ありがとう。

4

1 に答える 1

1

変数を格納するために使用できるオプションはたくさんあります。クラスメソッドにプロパティが必要なのはなぜですか。クラスメソッドは、インスタンスの役割がない場合に実行されます。ただし、もちろん、classメソッドでクラスのインスタンスを作成し、その値をオブジェクトに格納することもできます。もう1つの方法は、いくつかのグローバル変数を作成し、クラス全体からアクセスできるように値を割り当てることです。

変数をプロパティに格納するインスタンスを作成します。

+ (void)asyncResponse:(NSDictionary*)response:(NSError*)error{
  MyClass *me = [[MyClass alloc] init];
  me.someProperty = response;
}

しかし、これはクラスとプロパティの非常に単純な使用法であるため、あなたがこれを探していたとは思いません。

他にできることは、実装内にいくつかの静的変数を作成し、クラスを介してそれらの変数にアクセスすることです。より簡単に使用できるように、独自のカスタムゲッターとセッターを作成することもできます。

@interface MyClass:NSObject
  +(void)setResponse:(NSDictionary*)response;
  +(NSDictionary*)response;
@end

NSDictionary *globalResponse;
@implementation MyClass

+(void)setResponse:(NSDictionary*)response{
  if(response != globalResponse){
    globalResponse = response;
  }
}

+(NSDictionary*)response{
 return globalResponse;
}

initializeまたはloadメソッドで応答のデフォルト値を設定できます。これにより、単純なクラスレベルのプロパティが作成されます。

于 2012-12-03T23:34:56.550 に答える