0
由於sendAsynchronousRequest
在請求完成之前未完成,所以變量被設置爲(null)
。見代碼:使用sendAsynchronousRequest執行代碼
main.m
:
GlobalSettings *globalsettings = [[GlobalSettings alloc] init];
NSString *url = [globalsettings facebookLink];
NSLog(@"URL: %@", url);
所以,裏面GlobalSettings
:
-(NSString *)facebookLink
{
__block NSString *strReturn;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://urlEditedOut/"]];
__block NSDictionary *json;
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
json = [NSJSONSerialization JSONObjectWithData:data
options:0
error:nil];
strReturn = json[@"FB"];
}];
return strReturn;
}
所以這個工作得很好,已經在completion
塊內部測試。然而在main.m
變量url
被設置爲(null)
由於(我假設)異步請求仍然連接/處理請求。
你如何解決這個問題,以便將變量保存爲正確的值?