关于PFConfig的快速提问。不幸的是,我无法在后台获得我的当前配置,所以当应用程序同步启动时,我需要调用它。
如果网络不可用,应用程序就会冻结在某些版本的iOS上,我想知道是否可以在同步调用上设置超时。
谢谢
发布于 2016-01-04 08:10:04
我的主要建议是进行调用异步,并设计您的UI来处理它。例如,一个只运行第一次运行的视图控制器,它在准备运行时说“嗨”(并且要求用户在第一次运行时必须有一个网络--如果用户刚刚下载了应用程序的话)。
换句话说,我认为强制配置调用是同步的是错误的,但是这里有一种方法.
- (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,尽管他的其他建议对于document来说是特殊的)。
https://stackoverflow.com/questions/34582421
复制