我遇到了一个奇怪的问题。我在我的设备上运行iOS 4.3.2。在Xcode4中编译,但我没有使用iOS 5 beta SDK。
我的应用程序从服务器获取plist文件,plist文件是我在应用程序中使用的一组字符串。
我通过请求和连接获得数据,如下所示
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:pathAndFile]
cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0];
NSURLConnection *con =[[NSURLConnection alloc] initWithRequest:req
delegate:self];在wifi上运行时-如果我在服务器端进行更改,应用程序将看到新数据,并在每次启动应用程序时使用它。
如果我把我的手机切换到3G模式,它会在第一时间正确地获取数据。如果我随后返回并更改服务器上的文件,并重新运行应用程序-它只加载旧数据,而不是新数据。应用程序正在命中建立和加载连接的代码。
好了,现在我正处于应用程序使用旧数据的状态。我把手机切换到wifi和BAM,新的数据就在那里。
但如果我现在关闭应用程序。关闭wifi。启动应用程序,应用程序将再次使用旧数据。
我确实实现了
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
return nil;}
如在另一个堆栈溢出线程中所建议的。谁有任何想法,为什么会发生这种情况,以及我如何让它正确工作?
发布于 2011-09-26 12:33:08
我只是抛出这一点作为检查:
我很难相信这一点,但也许你的3G运营商正在缓存?您是否可以检查您的服务器日志,以查看您是否收到来自设备的实际呼叫?如果没有,请尝试在每个请求的URL末尾连接一个随机的querystring值,然后再次检查服务器日志。
希望这能有所帮助。
https://stackoverflow.com/questions/7550614
复制相似问题