Iphone 关闭以从类方法指定属性

Iphone 关闭以从类方法指定属性,iphone,objective-c,ios,ipad,cocoa,Iphone,Objective C,Ios,Ipad,Cocoa,我只是好奇,好像有什么方法可以分配一个从类方法触发的属性 例: 在那个调用中,我得到了NSURLConnection的响应,但是,我试图在另一个类中使用它,并将该字典设置为属性,但它给了我错误,因为这是一个类方法。asyncResponse是一个“委托调用”,我使用它在运行时指向任何特定的类 谢谢。您可以使用许多选项来存储变量。为什么在类方法中需要属性。类方法在没有实例的角色时运行。但是,当然,您可以通过在class方法中创建类的实例并将值存储在对象中。另一种方法是创建一些全局变量并将值分配给它

我只是好奇,好像有什么方法可以分配一个从类方法触发的属性

例:

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


谢谢。

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

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

+ (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方法中设置响应的默认值。这将创建一个简单的类级属性。

您可以这样做,但您希望在什么实例上更改该属性?所有的例子还是只有一个?如果一个,哪个?@RamyAlZuhouri,我想分配给“一”属性,该属性可以是self.username。因此,通过这种方式,我可以从响应字典中提取一个元素并在本地分配它。然而,编译器在这样做时给了我一个错误。我们怎么做呢?静态方法不会在特定实例上调用,因此关键字self无效。好吧,学究一点,
self
在类方法范围内有效。它只指向
@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;
}