0

私の目的は、iOS で UIWebView を使用して Web アプリケーションを構築することです。基本的には、BlackBerry が Webworks に対して行うことを行います。

読み回した後、キャッシュがどのように機能するかがわからないため、次のテストを試しました。

まず、「Hello World」で簡単な Web アプリケーションを作成しました。

アプリケーションのビルドと実行 - 正常に動作しました

次に、login.html を変更しました (これが私の Hello World の名前でした)。私が行った変更は、別のページへのハイパーリンクを使用して Hello World を再配置したことです。

Build&Run を再度実行すると、古いページがまだ表示されます。

それで、どこかにキャッシングがあると思いますか?

次のことを行う方法はありますか?

  • すべてのファイルがディスク上にあるため、速度は重要ではないため、キャッシュを無効にしますか?
  • アプリケーションを起動するたびにキャッシュをクリアしますか?

誰もこれに遭遇したことがありますか?

ありがとう

私が試した: UIWebviewからキャッシュを削除する方法またはUIWebviewのロックを解除する方法

別の更新 ------

別の簡単なテストを試してみたところ、すべての html、css、js ファイルを含む HTML フォルダーを削除したため、現在はゴミ箱に入れられています。アプリケーションを再度実行し、プロジェクトから 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

`

4

2 に答える 2

1
Yes..I encountered the same problem..      
I solved it by adding the below statement  in didFinishLaunchingWithOptions method of AppDelegate class

  [[NSURLCache sharedURLCache] removeAllCachedResponses];
于 2013-01-17T10:05:26.590 に答える
1

これを試して

if ([htmlData length]==0) {
//no data
}

長さが 0 の場合、これはデータをロードしません。他の条件では、プロジェクトから html ファイルを削除しても、リセットしない限り、シミュレーターに存在します。

それが役に立てば幸い。

于 2013-01-17T11:12:36.390 に答える