您的位置:首页 > 移动开发 > IOS开发

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);

}

}

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


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: