[IOS] UIWebView 캐쉬 메모리 해제

MOBILE/IOS 2014. 10. 13. 09:08

요즘 Native UI를 사용하지 않고 자주 바뀌는 내용을 UIWebView를 활용하여 모바일 웹에서 처리해 주고 있는 앱들이 많다.

앱을 업데이트 하지 않아도 모바일 웹의 UI와 정보를 업데이트 해주면 되기 때문이다.


UIWebView를 사용해 처리하다 보면 UIViewController에서 didReceiveMemoryWarning 메소드가 호출 되는 경우가 있는데 

이런 메모리 부족 현상을 줄이고자 구글링을해보았다.


AppDelegate.m

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

/*

UIWebView에서 사용될 내부 캐시 영역(내부 메모리/디스크)을 설정하고

설정된 캐시 영역을 공용으로 사용하도록 설정한다.

*/

int cacheSizeMemory = 4 * 1024 * 1024;

int cacheSizeDisk = 32 * 1024 * 1024;


NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory

diskCapacity:cacheSizeDisk

diskPath:@"nsurlcache"];

[NSURLCache setSharedURLCache:sharedCache];

}


- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

{

//UIWebView의 캐시들을 삭제

[[NSURLCache sharedURLCache] removeAllCachedResponses];

}


만약 해제 시점을 applicationDidReceiveMemoryWarning이 호출되는 시점이 아닌 다른 시점에 하고 싶다면 그때 그때 아래 코드를 사용하면 된다.

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 



참고 : http://stackoverflow.com/questions/5468553/clearing-uiwebview-cache 


설정

트랙백

댓글