iOS项目经验-创建线程的三种方式
2015-10-01 23:25
288 查看
:
/**
1. 开发比较复杂的多线程程序时,可以现在主线程把功能实现
2. 实现功能以后,可以把耗时的功能再放到子线程
3. 再增加一个线程,建议开发的时候,线程一个一个增加
*/
/*
线程安全的概念: 就是在多个线程同时执行的时候,能够保证资源信息的准确性.
“UI线程” – 主线程
** UIKit 中绝对部分的类,都不是”线程安全“的
怎么解决这个线程不安全的问题?
苹果约定,所有程序的更新UI都在主线程进行, 也就不会出现多个线程同时改变一个资源。
// 在主线程更新UI,有什么好处?
1. 只在主线程更新UI,就不会出现多个线程同时改变 同一个UI控件
2. 主线程的优先级最高。也就意味UI的更新优先级高。 会让用户感觉很流畅
*/
加锁,互斥锁
加锁,锁定的代码尽量少。
加锁范围内的代码, 同一时间只允许一个线程执行
互斥锁的参数:任何继承 NSObject *对象都可以。
要保
// 耗时操作
- (void)run:(NSString *)str
{
for (int i = 0; i < 10; i++) {
NSLog(@”%@–%d”, [NSThread currentThread], i);
}
}
- (void)test3
{
// “隐式”创建线程方式
[self performSelectorInBackground:@selector(run:) withObject:@”cz”];
}
// 创建线程方式2
- (void)test2
{
NSLog(@”—%@”, [NSThread currentThread]);
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@”hello”];
}
// 创建线程方式1
- (void)test1
{
// 实例化一个线程对像
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
}
/**
1. 开发比较复杂的多线程程序时,可以现在主线程把功能实现
2. 实现功能以后,可以把耗时的功能再放到子线程
3. 再增加一个线程,建议开发的时候,线程一个一个增加
*/
/*
线程安全的概念: 就是在多个线程同时执行的时候,能够保证资源信息的准确性.
“UI线程” – 主线程
** UIKit 中绝对部分的类,都不是”线程安全“的
怎么解决这个线程不安全的问题?
苹果约定,所有程序的更新UI都在主线程进行, 也就不会出现多个线程同时改变一个资源。
// 在主线程更新UI,有什么好处?
1. 只在主线程更新UI,就不会出现多个线程同时改变 同一个UI控件
2. 主线程的优先级最高。也就意味UI的更新优先级高。 会让用户感觉很流畅
*/
加锁,互斥锁
加锁,锁定的代码尽量少。
加锁范围内的代码, 同一时间只允许一个线程执行
互斥锁的参数:任何继承 NSObject *对象都可以。
要保
// 耗时操作
- (void)run:(NSString *)str
{
for (int i = 0; i < 10; i++) {
NSLog(@”%@–%d”, [NSThread currentThread], i);
}
}
pragma mark - 线程的创建方式
// 创建线程方式3- (void)test3
{
// “隐式”创建线程方式
[self performSelectorInBackground:@selector(run:) withObject:@”cz”];
}
// 创建线程方式2
- (void)test2
{
NSLog(@”—%@”, [NSThread currentThread]);
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@”hello”];
NSLog(@"test2 --- %@", [NSThread currentThread]);
}
// 创建线程方式1
- (void)test1
{
// 实例化一个线程对像
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 让线程开始工作,启动线程, 在新开的线程执行run方法 [thread start];
}
相关文章推荐
- iOS开发学习之地图demo
- IOS-各种手势
- iOS中消息的传递机制
- iOS软件开发 类目延展协议的使用
- iOS 多线程的使用情况
- ios9最好用的7大新功能
- IOS项目开发规范--文件树整理
- ios浅谈关于nil和 NIL区别及相关问题
- iOS 给整个tableview外框添加阴影
- IOS中Json解析的四种方法
- 转载:iOS开发的一些奇巧淫技
- IOS对象关系映射(ORM)之coreData框架的学习——(二)原理剖析及使用步骤详解
- [解析]iOS 分类机制
- iOS开发-------多线程编程
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- iOS 开发之实现调用电话功能代码
- iOS GET请求和POST请求
- iOS 同步请求和异步请求
- iOS 导出CSV文件(CSVWriter)
- iOS开发实用技术之传感器