【发布时间】:2013-04-03 20:42:48
【问题描述】:
我有下面的代码,它连接到一个 URL 并获取一些标头响应,例如 http 代码响应和最终 URL(用于重定向情况):
- (NSString *)test
{
__block NSString *cod = @"x";
NSString *urlString = @"@987654321@";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:15.0f];
[request setHTTPMethod:@"HEAD"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
NSURL *resolvedURL = [httpResponse URL];
NSString *code = [NSString stringWithFormat:@"%ld", (long)[httpResponse statusCode]];
NSLog(@"%@", resolvedURL);
NSLog(@"%@", code);
cod = @"y"; // the idea was use something like 'cod = code', then return 'code' at end.. But it dont works too.
}];
return cod; }
正如所见,我已将 cod 变量声明为 __block 类型并设置为 x 值。
在块内,我已经为 cod 设置了 y 值,但在方法结束时,我得到了 cod 的 x 值。
我尝试使用 cod = code 之类的东西然后返回 cod,尊重对象类型,但是我在块内分配的任何东西,我都无法获得它之外的值。
我做错了什么?
【问题讨论】:
-
备注:1.这与Xcode无关,而是API和/或语言问题。 2.语言叫Objective-C,不是Objective c,操作系统是iOS,不是ios。