2011-12-02 94 views
1

我已經寫了一個類來解析塊上的XML。該completionHandler返回mutableArray和錯誤(如果發生),問題是,我可以在NSLog的數組的元素,但如果我初始化一個__block NMutableArray與陣列它返回null:__block ivar始終爲空(空)

__block NSMutableArray *imagesURLs; 
    NCBlockParser *parser = [[NCBlockParser alloc] init]; 
    [parser parseXMLFromURL:url withElementsName:[NSArray arrayWithObject:@"element"] completionHandler:^(NSMutableArray *item, NSError *err) 
    { 
    if (err) { 
     NSLog(@"%@",[err localizedDescription]); 
    } 
    else { 
     imagesURLs = [[NSMutableArray alloc] initWithArray:item]; 
    } 
    }]; 

    NSLog(@"%@",imagesURLs); // (null) here :(

想法?

+0

看起來像你切出了很多代碼,這將是有用的在這裏....會需要更多來自你。 –

回答

2

所以,你有一些關於塊如何工作的困惑。

NSLog行在塊執行前很長時間才運行。您的imagesURL變量只在您的解析返回後異步填充。在塊內移動NSLog,你應該看到你的期望。

+0

但我必須在塊外使用該var。有一種方法? –

+0

您需要評估異步編程的工作方式。我沒有足夠的關於您的特定問題或架構的信息來幫助您。 –