我是一名新的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)无法访问类方法中的实例变量时得到错误
答案 0 :(得分:2)
你不能,这是设计的一个有意的部分。对于给定的类,您可以根据需要创建任意数量的实例,但每个实例都是独立的,并且每个实例都有自己的状态集(变量/属性)。
类方法不带状态,并且不知道任何实例,因此无法知道要访问哪个实例的变量。
我假设你想要访问delegate
。也许你的方法应该是一个实例方法呢?