作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个UIScrollView
。减速完成后,我需要创建一个UIViewController
的新实例。问题是,尽管创建了此过程(大约需要1秒钟),但我无法滚动,并且UI感觉不太流畅。我正在考虑在后台线程中创建此 View Controller 。这是个好主意吗?创建它之后,我还需要做一些工作,并且必须在主线程上完成这项工作。如果我在创建 Controller 的方法上使用dispatch_async,然后在 View Controller 上使用dispath_sync(主队列)来完成我必须在 View Controller 上执行的工作,那么dispatch_sync会一直等到我的异步工作完成后再执行吗?
tl; dr我在scrollViewDidEndDecelerating中做了很多工作,但是这导致我的scrollview的滚动性能很差。如何提高性能?
样本:
- scrollViewDidEndDecelerating {
dispatch_async(background) {
[self createVC];
[self performSelectorOnMainThread:(setupView)];
}
}
最佳答案
需要更多代码来了解为什么启动UIVIewController时scrollView停止,但是顺便说一句:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{
// This is happening in the background thread.
// create view controller
dispatch_async(dispatch_get_main_queue(), ^{
// This is happening on the main thread; all UI updates must happen here.
// here setup view
});
});
关于ios - 在后台线程中创建 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316523/
我是一名优秀的程序员,十分优秀!