NSObject 的 performSelectorInBackground:withObject
参数1:方法名称,参数2:方法参数- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
可以理解为切回到主线程么?
NSThread
初始化方法
- (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
利用 初始化方法得到的实例需要调用- (void)start
该进程才会开始工作
如果用便利构造器构造的话就构造完成就可以直接工作
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
同时为了保证多线程访问一个数据时,这个数据不会同时被操作,引入了NSLock
这个类
某些代码开始操作数据时可用[lock lock]
来锁住代码,不让其他线程进行操作,当执行完成时进行[lock unlock]
操作,这样下一个进程才会执行这段代码
iOS中有@ synchronized{}
开简化NSLock,只需要把需要锁的代码放在这个括号中就会自动锁住和解锁
NSOperationQueue,NSOperation
NSOperationQueue 通过- (void)addOperation:(NSOperation *)operation
方法来向队列中添加NSOperation
NSOperation
是一个抽象类,需要NSInvocationOperation
(或者其他的实现抽象类的类)创建一个NSOperation操作单元
NSBlockOperation
是系统提供的一个通过block创建操作单元的方法
它的便利构造方法+ (instancetype)blockOperationWithBlock:(void (^)(void))block
可以直接通过block中写要实现的代码
[NSOperationQueue mainQueue]
获取到主线程队列
[NSOperationQueue currentQueue]
获取当前线程队列
Grand Central Dispatch (GCD)
中文翻译:大中央调度^_^