2011-06-28 47 views
2

所以,我在我的第一个视图viewDidLoad中得到了一个怪物代码。好吧,我分配我自己的对象的7,所以它看起来像这样使用GCD加速视图加载

OwnObject *o1 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]]; 
OwnObject *o2 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]]; 

等等......

我在看一个会话视频再次在苹果开发者和他们说,我应该使用GCD加快速度,所以我可以通过将其放入队列来加速我的应用程序?

请注意,我的视图加载速度不是很慢,但我只是想知道我应该在调度队列中放置那样的东西。

谢谢,对不起,如果这是愚蠢的。

+0

如果它的速度足够快,可以同步加载图像,为什么还要在后台加载呢? –

+0

我只是想知道我应该在背景中做这些事吗? –

+0

我通常使用GCD在后台执行网络操作。你在这里展示的对象创建通常足够轻量,可以在主线程中完成。 –

回答

4

如果这些分配不做需要主线程的事情(例如触摸UI),则可以通过队列中的GCD完成。您希望使用dispatch_async,因为对于同步调用,您仍然需要等到分配完成后才会收益。此外,您需要确保您的视图控制器的设计目的是处理完成viewDidLoad而不分配这些对象,因为异步调度会非常异步。您可能需要发布分配已完成的通知或使用dispatch_group_notify,以便视图控制器知道分配何时完成并可以开始使用对象。

除非这些分配需要很长时间,否则这可能比它的价值更麻烦。

+0

好的谢谢!这真的很有帮助。 –