ios | ios도 모르고 하이브리드 앱 개발하기 [ 27 UIWebView 캐시 삭제 / 도큐멘트 및 데이터 삭제]

2016. 10. 24. 16:16mobile/ios



ios도 모르고 하이브리드 앱 개발하기 [ 27 UIWebView 캐시 삭제하기 ]



UIWebView 로 개발하다보니 캐시문제가 생겼다.


서버에서 웹페이지를 수정 한 후 앱에서 실행했을 때 예전 화면이 그대로 나온다.




검색해 보니 다음 소스를 가장 많이 사용하고 있었다.

모든 캐시를 초기화 한다고 했다.

1
[[NSURLCache sharedURLCache] removeAllCachedResponses];
cs


저 소스를 


AppDelegate.m > didFinishLaunchingWithOptions 에도 붙혀넣어 보고


ViewController.m > viewDidLoad 에도 붙혀넣어 보았다.


근데 이거 테스트 어떻게 해야하나 ???



Android 같은 경우는 앱 상세정보에 캐시 정보가 있어서 캐시가 삭제 되는게 눈으로 확인이 된다.


근데 IPhone 은 어디서 확인하지 ?

 





찾다 보니 Android와 비슷한 형태를 띄고있는 설정화면을 발견할 수 있었다.


설정 > 일반 > 사용내용 > 저장공간 (아이폰 버전마다 메뉴명이 다를 수 있어요)


위 경로로 가보면 앱들의 도큐멘트 및 데이터라고 해서 앱 정보와 사용중인 용량이 표시가 되고 있었다.


이 용량이 캐시를 나타내고 있는 것인지는 모르겠다.


하지만 앱을 몇번이고 실행시켜도 용량이 늘어나기만 하지 줄어들지 않았다.


여기에 표시되는 정보가 캐시랑 관련이 있는 것일까 ?




왠만큼 검색해 보았지만 찾지 못했다.


그래서 직접 캐시 폴더를 삭제해보았다.


AppDelegate.m > didFinishLaunchingWithOptions 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    NSString *LibraryDir = [NSString stringWithString:[NSHomeDirectory() stringByAppendingPathComponent:@"Library"]];
    
    NSString *Library_CachesDir = [NSString stringWithString:[LibraryDir stringByAppendingPathComponent:@"Caches"]];
    
    NSFileManager *fm = [NSFileManager defaultManager];
    
    NSArray *list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:Library_CachesDir error:nil];
    
    int fileCount = [list count];
    
    if (fileCount!=0)
    {
        for (NSString *path in [fm contentsOfDirectoryAtPath:Library_CachesDir error:nil])
        {
            [fm removeItemAtPath:[Library_CachesDir stringByAppendingPathComponent:path] error:nil];
        }
    }
 
cs

1# : 라이브러리 폴더 경로

3# : 라이브러리 > 캐시 폴더

7# : 캐시폴더 내부 파일 리스트

15# : 캐시폴더의 내부 파일 삭제

 






실행할때마다 도큐멘트 및 데이터 용량이 초기화 되는 것을 확인할 수 있었다.


이 방법이 맞는 방법인지 너무 궁금하다...






 * 경고


IOS에 무지한 상태에서 구글링만으로 앱 개발 및 포스팅이 진행됨


누구나 따라할 수 있겠지만 결코 완벽한 정답이 아닐 수 있음


아주 주관적인 입장에서의 포스팅임