iOS多线程
文章平均质量分 77
yxcharles
just do IT
展开
-
多线程总结之GCD基础
/** * GCD Grand Central Dispatch 伟大的中枢调度器 优势 1. 为多核的并行运算提出的解决方案 2. 自动利用更多的CPU内核 3. 自动管理线程的生命周期 (创建线程 调用任务 销毁线程) 4. 程序员只需告诉GCD想要干什么 */// 任务 和 队列?// 任务 : 执行什么操作// 队列 :原创 2015-08-10 13:38:25 · 270 阅读 · 0 评论 -
GCD线程之间的通信
@implementation ViewController { UIButton *_button;}// 属性名不能以new开头- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@",[self class]); self.view.backgroundColor = [原创 2015-08-11 08:47:04 · 405 阅读 · 0 评论 -
NSOperation-NSInvocationOperation
- (void)viewDidLoad { [super viewDidLoad];// NSThread *thread = [NSThread alloc] initWithTarget: selector: object: // 创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc] init原创 2015-08-13 16:09:48 · 377 阅读 · 0 评论 -
NSOperation-NSBlockOperation
- (void)test { NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"---- download%@",[NSThread currentThread]); }]; [operation addExecutionBlock:原创 2015-08-13 16:13:11 · 374 阅读 · 0 评论 -
GCD各种队列
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {// [self asyncGlobalQueue];// [self asyncSerialQueue];// [self syncGlobalQueue];// [self syncSerialQueue]; [self原创 2015-08-10 11:31:17 · 418 阅读 · 0 评论 -
NSThread
#import "ViewController.h"/** * 一个NSThread对象就代表一条线程 创建 启动线程 // 创建 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; // 启动 [thread start]; *///原创 2015-08-10 13:49:22 · 391 阅读 · 0 评论 -
NSOperationQueue
- (void)dependence { // 假设有a b c三个操作,要求 /** * 1. 异步执行 2. 操作C依赖于操作B 3. 操作B依赖于操作A */ // 1.创建一个队列 非主队列 NSOperationQueue *queue = [[NSOperationQu原创 2015-08-13 16:16:11 · 321 阅读 · 0 评论 -
GCD延迟执行
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self delay1]; [self delay2]; [self delay3]; }- (void)delay1 { // 睡眠3秒 会卡主线程 NSLog(@"%@",[NSThre原创 2015-08-11 08:58:04 · 665 阅读 · 0 评论 -
线程之间的通信1
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self performSelectorInBackground:@selector(download) withObject:nil];}// 下载图片- (void)download { NSLog(@"downlo原创 2015-08-10 13:40:17 · 327 阅读 · 0 评论 -
GCD一次性代码
@interface ViewController ()@property (nonatomic,assign) BOOL hasExecuted;@property (nonatomic,strong) ImageDownloader *imageDownloader;@end@implementation ViewController- (void)viewDidLoad {原创 2015-08-11 09:09:51 · 432 阅读 · 0 评论 -
GCD队列组2
// 下载 - > 合并 - > 显示- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 组 // 一个并行队列队列中 有两个任务 然后放入一个组中 dispatch_group_t group = dispatch_group_create()原创 2015-08-11 09:12:31 · 370 阅读 · 0 评论 -
GCD队列组1
// 下载 - > 合并 - > 显示- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // @"http://img04.tooopen.com/images/20130712/tooopen_17270713.jpg"// @"https://www.baidu.com原创 2015-08-11 09:11:14 · 392 阅读 · 0 评论 -
多线程的安全
/** * 资源共享 1.一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 2.比如多个线程访问同一个对象、同一个变量、同一个文件 当多个线程引用同一个资源,会引发问题 */@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; _leftT原创 2015-08-10 13:43:16 · 225 阅读 · 0 评论 -
多线程理论
/** 什么是进程? 1. 进程是指在系统中正在运行的一个应用程序 2. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 什么是线程? 1. 一个进程 要想执行任务,必须得有线程(每一个进程至少要有一个线程) 2. 线程是进程的基本执行单元 ,一个进程的所有任务都在线程中执行 比如使用酷狗播放音乐,迅雷下载电影,都需要在线程中执行原创 2015-08-10 13:51:40 · 268 阅读 · 0 评论 -
UI之手势识别器 注意
/** * 不能将手势识别器当做控件来用 //1. 控制器默认会自动找对应的xib来创建View 2. 去掉controller之后的名字 3 完全同名的xib */原创 2015-08-11 08:49:02 · 374 阅读 · 0 评论 -
线程通信初识和总结
// NSOperationQueue/ // NSOperation 和 NSOperationQueue /** * 1.队列的类型 主队列 [NSOperation mainqueue]; 添加到主队列中的操作,都会放到主线程中执行 非主队列 [[NSOperation alloc] init];原创 2015-08-13 16:30:33 · 296 阅读 · 0 评论