标签:style color io os 使用 ar for art sp
进程:程序在计算机的一次执行活动,一个程序就是一个进程,在iOS中一个app就是一个进程
线程:程序执行的最小单元,一个进程中至少有一个线程(主线程)
一. 通过NSObject的方法管理线程
这个方法会帮助我们自动开辟一个后台线程,不需要自己创建
参数:(1)在这个后台线程中执行的方法
参数:(2)用于传递参数,没有为nil
[self
performSelectorInBackground:@selector(banZhuanPlus)
withObject:nil];
}
1.创建线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(banZhuanPlus) object:nil];
2.执行
[thread start];
[thread release];
[self
banZhuanPlus];
}];
2.创建队列
队列会自动创建一个辅助的线程;NSOperationQueue *queue = [[NSOperationQueue
alloc]
init];
最大并行数设置,同时执行几个操作单元
[queue setMaxConcurrentOperationCount:1];
3.执行,只要把操作单元添加到队列中,它就会执行
[queue addOperation:block];
[queue addOperation:invocation];
第一种队列
dispatch_queue_t mainQueue =
dispatch_get_main_queue();//主调队列,在主线程中执行,并且是串行(一次操作一个)
第二种队列
全局队列,在子线程中执行,并且是并行(一次可以执行多个);
参数:(1)设置队列的优先级(high, default,low,background);(2)预留参数,未来使用
dispatch_queue_t globalQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
0);
第三种队列
自定义队列,在子线程中执行,可以设置并行或者串行
参数:(1)区分队列的唯一标识可选项,如果不写:NULL;如果写,规范例子”com.example.myqueue".
参数:(2)设置并行或者串行的
并行 :DISPATCH_QUEUE_CONCURRENT;
串行:DISPATCH_QUEUE_SERIAL(or NULL)
dispatch_queue_t customQueue = dispatch_queue_create("com.example.myqueue", DISPATCH_QUEUE_CONCURRENT);
第一种,同步执行(需要等待执行完毕)
参数:(1)指定队列,(2)Block,执行的操作
dispatch_sync(globalQueue, ^{
[self banZhuanPlus];//执行的操作
});第二种,异步执行(无需等待)
dispatch_async(globalQueue, ^{
[self banZhuanPlus];//执行的操作
});dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(2 *
NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
[self
banZhuanPlus];
});
五.线程中注意点
第一,如果是在MRC模式下,线程中的autorelease对象不能释放,必须手动释放,或者添加自动释放池
标签:style color io os 使用 ar for art sp
原文地址:http://blog.csdn.net/hakusan/article/details/39396591