我正在使用后台异步调用向 Parse 查询某些对象。但是,在进行查询时,应用程序会卡住。我无法与之互动。一旦查询完成并加载了对象,应用程序就会跟上。据我了解,应用程序应该在查询期间响应,因为它是后台异步任务。
例如,当应用程序加载查询开始时 -> 如果我在查询过程中按下导航栏上的返回键,什么也不会发生 -> 查询完成并且我的对象出现 -> 应用程序弹出到根 Controller 以响应早期的接触
应用在查询后没有被卡住。它 react 正常。 我不确定问题是出在我的查询位置上,还是手机在解析时变慢了,或者是什么原因。任何帮助将不胜感激!!
相关代码:
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//Loads the users to be rated
[self loadNewUsersAndAd];
}
-(void)loadNewUsersAndAd{
self.usersQuery = [PFQuery queryWithClassName:@"UserObjects"];
[self.usersQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
self.queryingForUsers = YES;
if (error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:@"It looks like we couldn't update your current games! Make sure you're connected to the internet." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
self.queryingForUsers = NO;
}
else
{
//The query was successful
self.usersArray = objects;
[self loadNewImages];
self.queryingForUsers = NO;
}
}];
}
最佳答案
您不应该从后台线程更新 UI 元素。确保您的 loadNewImages
被分派(dispatch)到主队列 -
self.usersArray = objects;
dispatch_async(dispatch_get_main_queue(), ^{
[self loadNewImages];
self.queryingForUsers = NO;
});
关于iOS 应用程序在解析异步查询期间卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27851492/