RestKit Makes UI Unresponsive(RestKit使用户界面无响应)
本文介绍了RestKit使用户界面无响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是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];
}
更多背景:
我这样做是为了将新的模型视图加载到无限的UIScrollView
中。我检测到当用户滚动到视图底部(编辑了坐标逻辑)时,如上所述使用RestKit加载下一组视图,当模型返回时,我将它们加载到addModelsToView
中的滚动视图中。即使当我注释掉addModelsToView
时,起伏不定的逻辑仍然存在,所以我确定这与RestKit有关(或者至少我是如何使用它的)。
根据我对RestKit的理解,它确实是异步加载的,所以我很难找到为什么/在哪里发生波动。
提前谢谢!
推荐答案
在NSOperation
上调用start
会在您从中调用它的同一线程上开始同步操作。因此,您是在主线程上执行此下载,这将阻止用户界面更新
您应该将操作添加到队列
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];
这篇关于RestKit使用户界面无响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:RestKit使用户界面无响应
基础教程推荐
猜你喜欢
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01