我只是好奇,好像无论如何要分配一个从类方法触发的属性?
前:
+ (void)asyncResponse:(NSDictionary*)response:(NSError*)error
我在该调用中得到NSURLConnection
的响应,但是,我试图在我的另一个类中使用它并将该字典设置为属性,但它给了我错误,因为这是一个类方法。 asyncResponse是一个“委托调用”,我用它来指向运行时的任何特定类。
感谢。
答案 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方法中设置响应的默认值。这使得一个简单的类级属性。