阻止 UIView 移动时的线程冻结



All is title :)我有这个方法:

[[NetworkManager sharedInstance] getContentFromUrl:url withId:@"json" onResultBlock:^(NSData *data, NSString *identifier) {
            NSLog(@"done")
    } onFailureBlock:^(NSError *error, NSString *identifier) {
        NSLog(@"error");
    }];

在我的应用程序中,我有一个包含 50 个单元格的表格视图。当我运行我的应用程序并且我用手指移动表格视图时,不会显示"完成"消息。因此,下一次下载不会开始:(但是当我在桌面上松开手指时,出现了"完成"消息......

信息:方法getContentFromUrl 实例化由 NSOperation 子类化的对象。在这个对象中,我使用 NSURLConnection initWithRequest:delegate 获取内容:然后,将对象添加到 NSOperationQueue 中。

感谢您的答案:)

您的NetworkManager类正在默认运行循环模式下调度主线程上的异步NSURLConnection对象。当您的手指向下时,运行循环将进入NSEventTrackingRunLoopMode模式。这将暂停连接。

应修改NetworkManager以使用 NSRunLoopCommonModes 显式调度连接。这包括默认模式和事件跟踪模式。

最新更新