我有这么奇怪的问题。我在我的设备上运行iOS 4.3.2。在Xcode 4中编译,但我没有使用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,它会在第一时间正确抓取数据。如果我然后返回并更改服务器上的文件,并重新运行应用程序 - 它只加载OLD数据,而不是新数据。应用程序正在访问建立和加载连接的代码。
好的,现在我处于应用程序使用旧数据的状态。我将手机切换到wifi和BAM,新数据就在那里。
但如果我现在关闭应用程序。关掉wifi。启动应用程序,应用程序再次使用旧数据。
我确实实现了
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
return nil;
}
正如另一个stackoverflow线程中所建议的那样。任何人都有任何想法为什么会发生这种情况以及如何让它正常工作?
答案 0 :(得分:1)
我只是把它扔出去作为检查的东西:
我很难相信这一点,但也许你的3G运营商正在缓存?您是否可以检查服务器日志以查看是否从设备接收实际呼叫?如果没有,请尝试在每个请求的URL末尾连接一个随机查询字符串值,然后再次检查服务器日志。
希望这有帮助。