2014-06-17 48 views
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)由於(我假設)異步請求仍然連接/處理請求。

你如何解決這個問題,以便將變量保存爲正確的值?

回答