我有一个API代码,它加载应用程序所需的数据。很简单,就像:
- (void) getDataForKey:(NSString*) key onSuccess:(id (^)())completionBlock我缓存从服务器返回的数据,因此该函数的下一次调用不应该执行网络请求,除非对给定的密钥缺少一些数据,否则我需要从服务器端再次加载它。
只要我每个屏幕都有一个请求,一切都没问题,但现在我有一个案例,我需要对一个屏幕上的每个单元都这样做。问题是我的缓存无法工作,因为在响应从第一个响应进入之前,会同时创建5-6个响应。
在这里,有什么解决方案可以不创建多个网络请求并进行其他呼叫等待第一个网络请求呢?
发布于 2015-08-21 04:04:03
您可以尝试创建一个RequestManager类。使用字典缓存请求。
或者您可以使用操作队列来执行此操作。一些文件:
如何使用NSOperations和NSOperationQueues
发布于 2015-08-21 06:48:26
也许会有这么多耗时的解决方案。我有个窍门。在AppDelegate中创建BOOL,其缺省值为FALSE。当您收到第一个响应时,将其设置为TRUE。因此,当您转到另一个屏幕,在发出请求之前,只需在if条件下检查BOOL变量的值。如果它的真实意思是收到了响应,那么就去做,否则不要做任何事情。
https://stackoverflow.com/questions/32129831
复制相似问题