NSThread是多线程的一种,优缺点如下:
(1)优点:NSThread 比GCD、NSOperation都轻量级
(2)缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销
NSThread有两种方法创建子线程,一种是隐式创建,另一种是显示创建。
第一种是隐式创建,有以下几种方式:
(1)多用于串行,且在主线程中执行。
- (id)performSelector:(SEL)aSelector withObject:(id)object;
(2)后台执行,多用于并行,开辟新的子线程,并在子线程中执行。
- (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg;
(3)延迟执行,在主线程中执行。
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
(4)回到主线程执行
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;
停止执行的方法
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget
示例: