【发布时间】:2012-09-10 13:36:53
【问题描述】:
看来我还没有完全理解积木的概念……
在我的代码中,我必须从 asychronous block 中取出 JSON 数据,以便从 'outer' 方法返回。我google了一下,发现如果定义一个variable with __block,v̶i̶s̶i̶b̶i̶l̶i̶t̶y̶_mutability_ of这个变量会扩展为block。
但是由于某种原因返回的 json 对象是 nil。我想知道为什么?
- (NSMutableDictionary *)executeRequestUrlString:(NSString *)urlString
{
__block NSMutableDictionary *json = nil;
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPShouldHandleCookies:YES];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-type"];
NSString *cookieString = [self.userDefaults objectForKey:SAVED_COOKIE];
[request addValue:cookieString forHTTPHeaderField:@"Cookie"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue currentQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSLog(@"dataAsString %@", [NSString stringWithUTF8String:[data bytes]]);
NSError *error1;
NSMutableDictionary * innerJson = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error1];
json = innerJson;
}];
return json;
}
【问题讨论】:
标签: objective-c ios nsurlconnection objective-c-blocks