我正在從URL加載一個相當簡單的XML文件。我想在解析器加載文件時顯示網絡活動指示器,但顯然不是在解析時。加載時[NSXMLParser initwithcontentsofurl:...]是否鎖定?
問題:當文檔從url加載時,initWithContentsOfUrl:方法是否執行鎖定程序?換句話說,下面的代碼是正確的嗎?
這似乎很明顯,這是好的,但我想100%肯定。
NSString* const urlString = @"...";
NSURL* url = [NSURL URLWithString:urlString];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
NSXMLParser* parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
不,對進度百分比不感興趣。只需要知道它何時完成,並且問題基本上歸結爲initWithContentsOfUrl與同步或異步NSURLConnection協同工作。意思是如果它確實是同步的,我可以(可能)安全地假定在initWithContentsOfURL返回之後完成下載。 – pille
即使您可以認爲它已完成,您的GUI更新 - [[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]' - 將不可見,因爲同步方法阻止GUI重繪。在返回到事件循環之前,GUI不會重新繪製。 –