关于 PFConfig 的快速提问。 不幸的是,我无法在后台获取当前配置,因此我需要在应用程序同步启动时调用它。
如果网络不可用,应用程序冻结在某个版本的iOS上,我想知道我是否可以在同步调用上设置一些超时。
由于
答案 0 :(得分:1)
我的主要建议是调用异步并设计你的UI来处理它。例如,一个第一次运行的视图控制器,表示" hi"它准备好运行(并要求用户必须首次运行网络 - 如果他们刚刚下载了应用程序,则极有可能)。
换句话说,我认为强制配置调用同步是一个错误,但这是一种方法...
- (PFConfig *)yuckyGetConfig {
__block PFConfig *config;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[PFConfig getConfigInBackgroundWithBlock:^(PFConfig *config, NSError *error) {
config = config;
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
return config;
}
这个想法是dispatch_semaphore_wait
等同于一个while循环(但执行的指令少得多),直到getConfig块执行完毕。 (这个想法归功于@Rob, here,尽管他的其他建议特别针对文档api。)