转而从Class方法中分配属性

时间:2012-12-03 18:05:20

标签: iphone objective-c ios ipad cocoa

我只是好奇,好像无论如何要分配一个从类方法触发的属性?

前:

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

我在该调用中得到NSURLConnection的响应,但是,我试图在我的另一个类中使用它并将该字典设置为属性,但它给了我错误,因为这是一个类方法。 asyncResponse是一个“委托调用”,我用它来指向运行时的任何特定类。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用许多选项来存储变量。为什么在类方法中需要属性。当没有实例角色时运行类方法。但是,您当然可以通过在类方法中创建类的实例并将值存储在对象中。另一种方法是创建一些全局变量并为其赋值,以便可以通过类访问它。

创建实例以将变量存储到属性中;

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

但是,我不认为你在寻找这个,因为它很简单地使用了类和属性。

您可以做的另一件事是在您的实现中创建一些静态变量,然后通过您的类访问这些变量。您甚至可以为它创建自己的自定义getter和setter,以便更轻松地使用。

@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方法中设置响应的默认值。这使得一个简单的类级属性。