我的目标是在 iOS 上使用 UIWebView 构建一个 Web 应用程序,基本上就像 BlackBerry 为 Webworks 所做的那样。
阅读后,我不确定缓存是如何工作的,所以我尝试了以下测试:
开始使用“Hello World”创建简单的 Web 应用程序。
构建并运行应用程序 - 工作正常
然后更改了 login.html(这就是我的 hello world 的名称) 我所做的更改是我用指向另一个页面的超链接重新创建了 hello world。
当我再次构建并运行时,旧页面仍然显示。
所以我假设某处有缓存?
有没有做以下/最好的事情?
- 禁用缓存,因为速度并不重要我们所有的文件都在磁盘上?
- 每次启动应用程序时清除缓存?
有没有人遇到过这个?
谢谢
我试过了: 如何从 UIWebview 或 dealloc UIWebview 中删除缓存
另一个更新------
尝试了另一个简单的测试,我删除了我的 HTML 文件夹,其中包含所有 html、css、js 文件,所以它现在在垃圾箱中。再次运行应用程序并从项目中删除 html 引用,它仍然可以完美地加载它们。所以整个东西都缓存在某个地方。
作为另一次尝试,我还添加了:
-(void)dealloc{
self.webView.delegate = nil;
self.webView = nil;
[webView release];
[super dealloc];
}
在 NativeViewController.m 这没有帮助。
我的应用程序代码:`
#import "NativeViewController.h"
@implementation NativeViewController
@synthesize webView;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"login" ofType:@"html"];
NSData *htmlData = [NSData dataWithContentsOfFile:filePath];
if (htmlData) {
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle bundlePath];
NSString *fullPath = [NSBundle pathForResource:@"login" ofType:@"html" inDirectory:path];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
}
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
[self.webView removeFromSuperview];
self.webView.delegate = nil;
self.webView = nil;
}
-(void)webViewDidFinishLoad{
[[NSURLCache sharedURLCahce] removeAllCachedResponses];
}
- (void)dealloc {
[webView release];
[super dealloc];
}
@end
`