如何在类方法中访问实例变量

时间:2015-05-07 18:37:20

标签: objective-c

我是一名新的iOS开发人员,我尝试在类方法中访问实例变量,但我无法访问。请给我一些解决方案,这是我的代码

h.file

@protocol ServiceProvideDelegate <NSObject>
@required
-(void)responeFromURL:(NSDictionary*)dicResponse;
@end

@interface AFNetworkServiceProvider : NSObject
{
   id <ServiceProvideDelegate> delegate;
}
@property (nonatomic,strong) id delegate;

+(NSDictionary*)getResponseFromURL:(NSURL*)url;
@end

m.file

@implementation AFNetworkServiceProvider
@synthesize delegate;
+(void)getResponseFromURL:(NSURL *)url
{
 @try
 {
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
    AFHTTPRequestOperation *requestOperation=[[AFHTTPRequestOperation alloc]initWithRequest:request];
    requestOperation.responseSerializer=[AFJSONResponseSerializer serializer];

    [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
    {
        if(delegate)
        {
          [delegate responeFromURL:responseObject]
       } 
    }
    failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Response Error :- %@",[error localizedDescription] );
    }];
    [requestOperation start];    
}
@catch (NSException *exception)
{

}
@finally {

}
}

尝试使用协议方法返回Response对象,但是我在if(delegate)无法访问类方法中的实例变量时得到错误

1 个答案:

答案 0 :(得分:2)

你不能,这是设计的一个有意的部分。对于给定的类,您可以根据需要创建任意数量的实例,但每个实例都是独立的,并且每个实例都有自己的状态集(变量/属性)。

类方法不带状态,并且不知道任何实例,因此无法知道要访问哪个实例的变量。

我假设你想要访问delegate。也许你的方法应该是一个实例方法呢?