GCD的简单封装
扩展: dispatch_block_t :无参数block,使用起来很简单
下载链接:http://pan.baidu.com/s/1bndN6Yb
//串行队列
- (void)test1 {
WJGCDQueue *queue = [[WJGCDQueue alloc]initSerial];
[queue execute:^{
NSLog(@"1--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"2--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"3--%@",[NSThread currentThread]);
}];
}
//并行队列
- (void)test2 {
WJGCDQueue *queue = [[WJGCDQueue alloc]initConcurrent];
[queue execute:^{
NSLog(@"1--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"2--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"3--%@",[NSThread currentThread]);
}];
} //复杂运算,更新ui
- (void)test3 {
[WJGCDQueue executeInGlobalQueue:^{
NSLog(@"处理业务逻辑");
[WJGCDQueue executeInMainQueue:^{
NSLog(@"更新UI");
}];
}];
}
//延时操作
- (void)test4 {
NSLog(@"%@",[NSDate date]);
[WJGCDQueue executeInMainQueue:^{
NSLog(@"%@",[NSDate date]);
} afterDelaySecs:];
}
//定时器
- (void)test5 {
self.gcdTimer = [[WJGCDTimer alloc]initInQueue:[WJGCDQueue mainQueue]];
[self.gcdTimer event:^{
NSLog(@"GCD定时器");
} timeInterval:NSEC_PER_SEC];
[self.gcdTimer start];
}
//队列组
- (void)test6 {
WJGCDGroup *group = [[WJGCDGroup alloc]init];
WJGCDQueue *queue = [[WJGCDQueue alloc]initConcurrent];
[queue execute:^{
NSLog(@"线程1");
} inGroup:group];
[queue notify:^{
NSLog(@"线程执行");
} inGroup:group];
} //信号量
- (void)test7 {
WJGCDSemaphore *semaphore = [[WJGCDSemaphore alloc]init];
[semaphore signal];
[semaphore wait];
}
GCD的简单封装的更多相关文章
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
- iOS sqlite 增删改查 简单封装(基于 FMDB)
/** * 对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * * 基于 FMDB * * 操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...
- ADO简单封装(MFC)
简单封装了一下,不是很严谨. /************************************************************************/ /* INSTRUC ...
随机推荐
- Objective-C关于分类、扮演、协议
-----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 浅谈Objective-C编译器指令
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- .NET开源工作流RoadFlow-流程设计-流程属性设置
打开流程设计器点击新建流程后会弹出新流程属性设置框,属性设置包括基本信息,数据连接和标识字段三项设置. 1.基本信息 流程ID:系统自动给每个流程分配的一个唯一ID. 流程名称:给您的新流程取一个名称 ...
- Windows 10 IoT Core Samples
Windows 10 IoT Core Samples Welcome to the Windows 10 IoT Core Samples These samples have been valid ...
- JavaScript 中怎样判断文本框只能输出英文字母、汉字和数字,不能输入特殊字符!
JS-只能输入中文和英文2008-11-08 10:17在js中用正则表达式对象(RegExp)判断中文 ^[\u0391-\uFFE5]+$英文 ^[A-Za-z]+$中文和英文/^[\u0391- ...
- linux php安装zookeeper扩展
linux php安装zookeeper扩展 tags:php zookeeper linux ext 前言: zookeeper提供很犀利的命名服务,并且集群操作具有原子性,所以在我的多个项目中被采 ...
- Linux下cron的使用
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: /sbin/service c ...
- Xcode7 制作通用的framework(转)
2016-01-07 16:24 2994人阅读 评论(0) 收藏 举报 分类: ios x code(55) 1.新建一个静态库工程. file→ new→ project, 弹出框中选择iOS ...
- UIToolbar swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...