2

我有一个应用程序必须在屏幕上加载和呈现大量内容(主要是从数据库加载)。

我不会在这里发布所有代码,但实际上它只是构建了一组 UIView 对象,这些对象添加到 UIScrollView 对象中。没什么太复杂的,只是加载了很多东西。目前这需要一秒钟左右的时间来渲染所有内容(在主线程上运行)。

我想在加载时显示一个活动指示器,我认为最好的方法是让需要很长时间的方法发生在后台线程上,并在完成时“报告”。

问题是这样的。我知道所有的实际绘图都是由主线程完成的,所以是否可以创建一个新线程并建立一组 UIView 对象,然后在屏幕上绘制?

4

2 回答 2

3

有一个很棒的 WWDC2012 会议视频,它完全符合您的用例:

WWDC2012 在 iOS 中构建并发用户界面

基本上,诀窍是在另一个队列上准备和绘制视图并将其发送到主队列。

于 2012-10-24T22:40:58.610 回答
0

你是对的。所有的 UI 工作都应该在主线程上完成。在您的情况下,我建议您添加UIView对滚动视图可见的对象,并仅在滚动视图开始移动到该点时添加其余对象。您可以在它们即将可见时继续添加视图,并从滚动视图中删除任何不需要的视图。这通常有助于更好的内存管理。

于 2012-10-24T22:27:41.653 回答