iOS 应用程序在解析异步查询期间卡住

标签 ios xcode ios7 parse-platform xcode6

我正在使用后台异步调用向 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/

相关文章:

ios - 更新(继续开发)iOS 应用程序需要什么 "source code files"?

objective-c - iPad [opengl-es] 的画图应用程序线条不正确

iOS 8 自动布局问题

ios - 如何在加载 map 时直接显示多个注释的标题

ios - Objective-C 解决函数重载

ios - 如何从 NSDate 变量中获取工作日和/或月份名称?

iphone - AVAudioPlayer 影响系统声音

ios - 如何在 Swift 3 中编程延迟

ios - 在drawInRect中绘制渐变层

ios - 观察位置服务更新