NSURLRequest奇怪的行为

时间:2011-09-26 04:20:16

标签: iphone ios cocoa-touch ipad

我有这么奇怪的问题。我在我的设备上运行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线程中所建议的那样。任何人都有任何想法为什么会发生这种情况以及如何让它正常工作?

1 个答案:

答案 0 :(得分:1)

我只是把它扔出去作为检查的东西:

我很难相信这一点,但也许你的3G运营商正在缓存?您是否可以检查服务器日志以查看是否从设备接收实际呼叫?如果没有,请尝试在每个请求的URL末尾连接一个随机查询字符串值,然后再次检查服务器日志。

希望这有帮助。