所以,在我的第一个视图中,我在viewDidLoad上得到了一个怪物代码。好吧,我正在分配7个自己的对象,所以它看起来像这个
OwnObject *o1 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]];
OwnObject *o2 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]];
等等......
我再次在苹果开发者处观看会话视频,他们说我应该使用GCD来加快速度,所以我可以通过将它放到调度队列来加速我的应用吗?
请注意,我的视图加载速度不是很慢,但我只是想知道我是否应该在调度队列中放置这样的东西。
谢谢,对不起,如果这是愚蠢的。
答案 0 :(得分:4)
如果这些分配不执行需要主线程的事情(例如触摸UI),那么它们可以通过队列中的GCD完成。你想要使用dispatch_async
,因为通过同步调用,你仍然需要等到分配完成后才能获得任何收益。此外,您需要确保您的视图控制器设计为在没有分配这些对象的情况下处理完成viewDidLoad
,因为异步调度调用将是异步的。您可能需要发布分配已完成的通知或使用dispatch_group_notify
,以便视图控制器知道分配何时完成并可以开始使用对象。
除非这些分配花费很长时间,否则这可能比它的价值更麻烦。