相信不少人都在NSURLConnection中看过这个http请求方式
+ (void)sendAsynchronousRequest:(NSURLRequest *)request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*)) handler NS_AVAILABLE(10_7, 5_0);
这个方法是个多线程的异步请求方法,但是会让界面block住, 处理它浪费了我几个小时才处理好它。
解决这个问题的方式有两种:
1. 如果允许的情况下采用同步请求,
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
2. All UI operations must be done on the main thread. Multiple ways to do this
(所有的block操作放到主线程, 大多数的做法如下)
在调整界面的代码部分,按如下方式
请为这个方法发愁的朋友别担心,我已经尝试了,而且有效。dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView reloadData]; activityIndicator.hidden = TRUE; });
更多请参考:
本文探讨了在使用NSURLConnection的sendAsynchronousRequest方法时遇到的界面阻塞问题。尽管该方法为异步请求,但在实际应用中可能会导致UI冻结。解决方案包括在合适场景下切换到同步请求,并确保更新界面的操作在主线程进行。引用了Stack Overflow上的相关问题讨论链接以供参考。

719

被折叠的 条评论
为什么被折叠?



