Several ways that iOS cleans up the cache,
-(Long Long) Filesizeatpath: (nsstring*) filepath{
nsfilemanager* manager = [Nsfilemanager Defaultmanager];
if ([manager Fileexistsatpath:filepath]) {
return [[Manager Attributesofitematpath:filepath Error:nil] fileSize];
}
return 0;
}
TraverseFolder to get the folder size, return how many m
-(float) Foldersizeatpath: (nsstring*) folderpath{
nsfilemanager* manager = [Nsfilemanager Defaultmanager];
if (![ Manager Fileexistsatpath:folderpath]) return 0;
Nsenumerator *childfilesenumerator = [[manager Subpathsatpath:folderpath] objectenumerator];
nsstring* FileName;
Long long foldersize = 0;
while ((FileName = [Childfilesenumerator nextobject]) = nil) {
nsstring* Fileabsolutepath = [FolderPath stringbyappendingpathcomponent:filename];
Foldersize + = [self filesizeatpath:fileabsolutepath];
}
Return foldersize/(1024.0*1024.0);
}
1. Clear the first type of cache
-(void) Action: (ID) sender
{
Completely clear the cache the first method
UIButton * button = sender;
[Button settitle:@ "clean up" forstate:uicontrolstatenormal];
Nsarray *paths = Nssearchpathfordirectoriesindomains (Nslibrarydirectory, Nsuserdomainmask, YES);
NSString *path = [Paths lastobject];
NSString *str = [nsstring stringwithformat:@ "cache cleared%.1FM", [self foldersizeatpath:path]];
NSLog (@ "%@", str);
Nsarray *files = [[Nsfilemanager Defaultmanager] subpathsatpath:path];
For (NSString *p in files) {
Nserror *error;
NSString *path = [Path stringbyappendingpathcomponent:p];
if ([[[Nsfilemanager Defaultmanager] Fileexistsatpath:path]) {
[[Nsfilemanager Defaultmanager] Removeitematpath:path error:&error];
}
}
2. Sdimage third-party methods to clear the cache
[[Sdimagecache Sharedimagecache] cleardisk];
[[Sdimagecache Sharedimagecache] clearmemory];
3. Completely clear the cache the second method
Dispatch_async (
Dispatch_get_global_queue (dispatch_queue_priority_default, 0)
, ^{
NSString *cachpath = [Nssearchpathfordirectoriesindomains (nscachesdirectory, Nsuserdomainmask, YES) objectAtIndex:0] ;
NSLog (@ "%@", Cachpath);
Nsarray *files = [[Nsfilemanager Defaultmanager] subpathsatpath:cachpath];
NSLog (@ "Files:%d", [Files Count]);
For (NSString *p in files) {
Nserror *error;
NSString *path = [Cachpath stringbyappendingpathcomponent:p];
if ([[[Nsfilemanager Defaultmanager] Fileexistsatpath:path]) {
[[Nsfilemanager Defaultmanager] Removeitematpath:path error:&error];
}
}
[Self Performselectoronmainthread: @selector (clearcachesuccess) Withobject:nil waituntildone:yes];});
}
-(void) clearcachesuccess
{
NSLog (@ "clean success");
}
Several ways to clean up the cache in iOS