GCD常用函数
来源:互联网 发布:java注解是什么 编辑:程序博客网 时间:2024/04/30 23:24
1. ios延迟执行的几种方法
- [selfperformSelector:@selector(方法)withObject:nilafterDelay:2.0];
- [NSTimerscheduledTimerWithTimeInterval:2.0target:selfselector:@selector(方法)userInfo:nilrepeats:NO];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{
NSLog(@"");
});
gcd方式的优势:
可以控制在xx时间之后在哪个线程中执行。
2. GCD一次性代码:在程序的运行过程中只被执行一次
-(void)once{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSLog(@"一次性代码") });}
3.栅栏函数
注意:栅栏函数不能使用全局并发队列
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ dispatch_queue_t queue=dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ NSLog(@"test一,当前线程是%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"test二,当前线程是%@",[NSThread currentThread]); }); dispatch_barrier_async(queue, ^{ NSLog(@"我是栅栏++++++++++++++++++++++++++++++++++++++++++++"); }); dispatch_async(queue, ^{ NSLog(@"test三,当前线程是%@",[NSThread currentThread]); }); }@end
4.GCD快速迭代
一共要传3个参数:
参数1; 次数
参数2: 队列(只能传并发队列,主队列会发生死锁 串行队列无作用)
参数3: 索引 index
转移文件夹内容代码
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self moveFileGCD];}-(void)moveFile{ //1.获取文件夹地址 NSString *from =@"文件夹地址"; NSString *to=@"文件夹地址"; //获取目录下面的文件的路径 NSArray *subpaths = [[NSFileManager defaultManager]subpathsAtPath:from]; NSLog(@"内容:%@",subpaths); //遍历所有的文件 NSInteger count=subpaths.count; for (NSInteger i=0; i<count ; i++) { //拼接文件的全路径 NSString *fullPath=[from stringByAppendingPathComponent:subpaths[i]]; NSString *toFullPath=[to stringByAppendingPathComponent:subpaths[i]]; [[NSFileManager defaultManager]moveItemAtPath:fullPath toPath:toFullPath error:nil]; NSLog(@"全路径:%@------------------全路径:%@-----------%@",fullPath,toFullPath,[NSThread currentThread]); }}-(void)moveFileGCD{ //1.获取文件夹地址 NSString *from =@"文件夹地址"; NSString *to=@"文件夹地址"; //获取目录下面的文件的路径 NSArray *subpaths = [[NSFileManager defaultManager]subpathsAtPath:from]; NSLog(@"内容:%@",subpaths); NSInteger count=subpaths.count; //创建并发队列 dispatch_queue_t quque=dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT); dispatch_apply(count, quque, ^(size_t i) { //拼接文件的全路径 NSString *fullPath=[from stringByAppendingPathComponent:subpaths[i]]; NSString *toFullPath=[to stringByAppendingPathComponent:subpaths[i]]; [[NSFileManager defaultManager]moveItemAtPath:fullPath toPath:toFullPath error:nil]; NSLog(@"全路径:%@------------------全路径:%@-----------%@",fullPath,toFullPath,[NSThread currentThread]); });}@end
0 0
- GCD常用函数总结
- GCD常用函数说明
- GCD常用函数
- GCD常用函数
- iOS GCD常用函数总结
- 网络多线程-GCD常用函数
- GCD中常用的函数
- GCD中常用函数及释义
- GCD常用函数和文件剪切
- 多线程学习11-GCD常用函数
- 常用GCD
- 关于多线程GCD,小白必须知道的常用函数
- GCD常用方法
- IOS GCD 常用
- GCD常用的应用
- GCD常用使用方法
- IOS GCD 常用
- GCD常用方法
- 向maven仓库中导自己的jar包依赖
- Android NDK程序动态调试 初步尝试
- Java中的异常
- Thinkpad T460P I7 6820HQ版本运算以及显卡能力简单测试
- HTTPS工作原理和TCP握手机制
- GCD常用函数
- 背包问题详解
- xcode archive 一直是灰色的
- 最左原位
- 算法1
- Python语句(迭代及应用)
- activiti工作流
- Java8 default方法
- 63.内容提供者ContentProvider--系统内容提供者(获取短信)