2015-05-07 4 views
1

Я новый разработчик IOS, я пытаюсь получить доступ к переменной экземпляра в методе класса, но я не могу access.please дать мне какое-то решение здесь мой кодКак Access экземпляр переменной в методе класса

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 { 

} 
} 

Попробуйте Returne объект Response с использованием метода протокола, но я получаю сообщение об ошибке в случае (делегат) не может получить доступ к переменной экземпляра в методе класса

+1

Итак, где в этом коде вы пытаетесь получить доступ к переменной экземпляра? Какой код не работает? – Gruntcakes

+2

Вы не можете получить доступ к переменной экземпляра в методе класса - экземпляр не существует. – Adam

+1

А, я вижу ваш вопрос (вы назвали его совершенно неправильным). Вы не можете возвращать данные из операции «асинхронный», вы должны использовать обратный вызов – Adam

ответ

2

Вы не можете, и это намеренная часть дизайна. Для данного класса вы можете создать столько экземпляров, сколько хотите, но каждый из них независим, и каждый из них имеет свой собственный набор состояний (переменные/свойства).

Метод класса не имеет состояния и не знает ни одного из экземпляров, поэтому он не может знать , который имеет переменные экземпляра, к которым вы хотите получить доступ.

Предполагаете, вы хотите получить доступ к delegate. Может быть, вместо этого ваш метод должен быть методом экземпляра?

+0

Да @ben Я пытаюсь получить доступ к делегату. Спасибо за ваш ответ. Я понимаю из вашего ответа, что я должен использовать метод экземпляров – Hiren

Смежные вопросы