gpt4 book ai didi

ios - RestKit 使 UI 无响应

转载 作者:可可西里 更新时间:2023-11-01 17:09:35 26 4
gpt4 key购买 nike

我正在使用 RestKit 版本 0.2,当我按如下方式调用 RKRequestOperation 时,我发现它阻塞了 UI(也就是说,UI 变得断断续续/无响应):

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
NSString *urlString = [NSString stringWithFormat:@"http://localhost:8080/models?offset=%d&rows=%d", _offset, _numRows];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[_responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSLog(@"Got models: %@", [result array]);
[self addModelsToView:[results array]];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"FAILED!");
}];

[operation start];
}

更多背景知识:

我这样做是为了将新的模型 View 加载到无限的 UIScrollView 中。我检测到用户何时滚动到 View 底部(坐标逻辑编辑),使用 RestKit 如上所述加载下一组 View ,当模型返回时,我将它们加载到 addModelsToView 中的 ScrollView 中>。即使当我注释掉 addModelsToView 时,断断续续的逻辑仍然存在,所以我确定这与 RestKit 有关(或者至少我如何使用它)。

根据我对 RestKit 的了解,它确实是异步加载的,所以我很难找到为什么/在哪里发生波动。

提前致谢!

最佳答案

NSOperation 上调用 start 会在您调用它的同一线程上开始同步操作。所以你在主线程上执行这个下载,这会阻止 UI 更新

您应该将操作添加到队列中

RestKit github 页面有这个例子:

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/1234.json"]];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];

[manager enqueueObjectRequestOperation:operation];

关于ios - RestKit 使 UI 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com