一,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];
网友评论