我对iOS开发很陌生,并且已经在一段时间内完成了任务.决定最终寻求帮助.
在我让应用程序启动之前,我有一些数据要从互联网上加载.我已经决定利用didFinishLaunchingWithOptions在AppDelegate
它是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
//loading configuration
[Configuration downloadConfiguration:^(NSMutableArray *currencies, double refreshIntervalInMilis, double timeDifferenceInMilis, NSError *error) {
if (error) {
//displaying error dialog
} else {
//doing some stuff with data loaded
}
}];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
很明显,在加载数据之前,该方法将返回YES,因为它不会等待加载数据.我的问题是如何让这个方法在我返回YES之前等待这个块完成(如果配置没有正确加载,则为NO)?
在返回之前不要等待数据下载YES.如果应用程序尚未在30秒内启动,则iOS具有杀死应用程序的监视程序守护程序.因此,如果您的用户网络连接非常糟糕导致下载超过30秒 - 您的应用程序将在开始之前被杀死.
我的建议是使用通知来通知所需方的配置下载.安装程序需要根视图控制器列出,例如MYApplicationDidDownloadConfigurationNotification,一旦收到通知,它就会重新加载UI或推送一些依赖于相关配置的其他视图控制器.
如果下载失败 - 更新UI而不是NO从委托方法返回.在您的所有应用程序启动后,只是没有运气下载配置.
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |