[英]delegate becomes nil inside AFNetworking response block?
我正在使用AFNetworking来获取数据,并且在Service类中有一个委托,该委托可以是UIController。 Service类负责通过AFNetworking类获取数据。
//Class Service.
@interface Service : NSObject {
__weak id<ServiceDelegate>delegate;
}
- (void) doFetch:(APIInput*) input {
NSURL *url = [NSURL URLWithString:[self getLocation:input]];
NSLog(@"url request is: %@", url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
//NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);
[self.delegate serviceDidComplete:[self allocNewData:JSON]];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
NSError *error, id JSON){
[self.delegate serviceFailed: error];
}];
[operation start];
}
在UIController viewDidLoad中:
self.networkService = [[Service alloc] init];
[self.networkService setDelegate:self];
一旦运行ios应用程序,self.delegate为零。 为什么会这样呢?
这解决了。 我在设置操作之前创建了一个__block变量
__block id itsme = self.delegate;
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
//NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);
[itsme serviceDidComplete:[self allocNewData:JSON]];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
NSError *error, id JSON){
[itsme serviceFailed: error];
}];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.