我写了一个类来解析块上的XML。 completionHandler返回一个mutableArray和一个错误(如果它发生),问题是我可以NSLog数组的元素,但如果我用数组初始化__block NMutableArray它返回null:
__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
移到块内,您应该会看到您期待的内容。