在iOS中启动应用程序之前如何执行任务?

时间:2015-09-01 14:43:47

标签: ios objective-c

我正在编写一个应用程序,我可以从服务器加载一些图像,然后我将放入我的模型然后启动主视图控制器,然后将我的图像从模型加载到集合视图。怎么做?

2 个答案:

答案 0 :(得分:1)

您可以开始工作的第一种方法是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    /* start loading your images here, 
       cache them and let your viewcontroller reload */
    return YES;
}
AppDelegate.m中的

答案 1 :(得分:1)

您需要注意执行此逻辑的时间和位置。当然,理论上你可以将获取代码放在:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

但我真的不建议这样做。第一个原因是因为您可能希望等到图像加载完毕。您不应该在上述方法中执行网络呼叫,因为您不知道运行需要多长时间。 Apple建议您尽快从此方法返回YES。不这样做可能导致0x8badf00d崩溃 - “应用程序无法及时启动”。

我建议做的是创建一个“加载视图控制器”,它是应用程序启动后的根视图控制器。此视图控制器应启动图像加载,告诉用户发生了什么(使用微调器或类似的东西)并等待图像加载以将主视图控制器推入堆栈(或呈现它或其他)。您的图像将被保湿,您可以使用它们来填充您的收藏视图。

您的主视图控制器应该对这些图像有一些引用(从加载视图控制器传递它们或创建数据单例以检索它们)并使用UICollectionViewDataSourceUICollectionViewDelegate方法填充集合视图单元格(使用图像)。