在IOS项目里,有时候会执行一些大块的操作,例如访问网络,大的文件读写,删除等操作,如果直接在主线程里执行,往往会堵塞UI,这时候不得不考虑使用异步操作,使用GCD技术可以很方便的进行异步操作。
一段清理缓存的代码如下:
dispatch_async(
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
, ^{NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
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(@"清理成功");
}