iOS 多线程技术之NSThread
来源:互联网 发布:300533 冰川网络 编辑:程序博客网 时间:2024/06/06 14:07
在项目中,我们难免会用到多线程,使用多线程可以起到提高性能等的问题,今天我参考了网上的一些资料和自己查苹果文档,来说说这个NSThread的使用
多线程一共有三种方法,NSThread,NSOperation和GCD
今天着重讨论NSThread,后续再讨论NSOperation和GCD
这三种方法从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple推荐使用的
NSThread:
优点:NSThread比其他两个更轻量级。
缺点:需要程序员来管理线程的生命周期,线程同步等。线程同步对数据的加锁会有一定的系统开销。
Cocoa operation:
优点:不需要关系线程管理,数据同步的事情,程序员自己可以专心来做自己需要执行的操作上。Cocoa operation 相关的类是NSOperation ,NSOperationQueue.NSOperation是一个抽象类,使用它必须用的子类,可以实现它或者使用它定义好的两个子类:NSInvocationOperation和NSBlockOperation.创建NSOperation子类的对象,把对象添加到NSOperationQueue中执行。
GCD:
GCD是一个替代诸如NSThread,NSOperationQueue,NSInvocationOperation等技术的很高效和强大的技术。
NSThread的使用
1.NSThread有两种直接创建方式:实例方法和类方法,如下:
- (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(nullableid)argumentNS_AVAILABLE(10_5,2_0);
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(nullableid)argument;
对上边参数的解释:
selector:线程执行的方法
target:selector消息发送的对象
argument:传输给target 的唯一参数,可以是nil.
第一种方法是先创建对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息。这个其实就是程序猿开启线程,然后来做一些耗时操作,然后把更新UI这种操作再调用下边的方法让主线程来做,
[self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>]
当然了,除了可以更新主线程的数据外,还可以来更新其它的线程,比如:
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullableid)arg waitUntilDone:(BOOL)waitNS_AVAILABLE(10_5,2_0);
Hope To Help You !
- iOS 多线程技术之NSThread
- iOS多线程之NSThread
- ios多线程之NSThread
- iOS多线程之NSThread
- iOS多线程之NSThread
- iOS 多线程之NSThread
- IOS多线程之NSThread
- iOS --- 多线程之NSThread
- iOS多线程之NSThread
- iOS多线程之NSThread
- iOS多线程之NSThread
- iOS多线程之NSThread
- iOS-多线程之NSThread
- iOS多线程之NSThread
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- [机器学习] UFLDL笔记 - ICA(Independent Component Analysis)(Representation)
- setjmp的使用 -循环求1~100的和
- 期末成绩
- Xcode插件之Alcatraz的安装和遇到的问题
- SublimeText快捷键
- iOS 多线程技术之NSThread
- Shortest Path [1]
- 802.11协议帧格式、Wi-Fi连接交互过程、无线破解入门研究
- PlayWithUnion
- 蓝桥杯 Anagrams问题(数组运算+字符操作)
- xcode快捷键
- IOS获取网络图片的尺寸
- Bean named must be of type , but was actually of type
- 错误1error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead.