美文网首页
iOS NSThread解析

iOS NSThread解析

作者: liang1030 | 来源:发表于2021-09-01 16:39 被阅读0次

一,NSThread简介

NSThread是苹果官方提供面向对象操作线程的技术,简单方便,可以直接操作线程对象。

优点:轻量级,使用简单。可以取消(cancel)、退出(exit)当前线程。

缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销。

二,NSThread使用

1,实例初始化

- (instancetype)init;
- (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(nullable id)argument;
- (instancetype)initWithBlock:(void (^)(void))block;
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMethod:) object:@"param"];
[thread start];
    
NSThread *thread1 = [[NSThread alloc] initWithBlock:^{
    NSLog(@"----thread1:%@---",[NSThread currentThread]);
}];
[thread1 start];

- (void)threadMethod:(id)param {
    NSLog(@"%@",param);
    NSLog(@"----thread:%@---",[NSThread currentThread]);
}

注:通过以上实例初始化的线程需要调用start方法启动线程。

2,类方法

+ (void)detachNewThreadWithBlock:(void (^)(void))block;
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(nullable id)argument;
[NSThread detachNewThreadWithBlock:^{
    NSLog(@"----detachNewThreadWithBlock:%@---",[NSThread currentThread]);
}];
    
[NSThread detachNewThreadSelector:@selector(threadMethod:) toTarget:self withObject:@"param1"];

注:通过以上类方法创建的线程默认就已经开启了。

2,类属性

//获取当前线程
@property (class, readonly, strong) NSThread *currentThread;

NSThread.currentThread
[NSThread currentThread];

相关文章

网友评论

      本文标题:iOS NSThread解析

      本文链接:https://www.haomeiwen.com/subject/esoxwltx.html