iOS项目经验-创建线程的三种方式

来源:互联网 发布:哪个软件播放rmvb 编辑:程序博客网 时间:2024/05/29 07:28


/**
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];

}

0 0
原创粉丝点击