登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 87|回复: 6

IOS 多线程 NSThread,ios多线程编程

[复制链接]

267

主题

410

帖子

2255

金钱

手工艺人

发表于 2018-1-11 15:24:13 | 显示全部楼层 |阅读模式

        一个正在运行的应用程序是一个进程,一个进程会默认开启一个主线程,但是在主线程中的操作是串行的,也就是当有多个任务同时需要完成的时候,是按照顺序一个个执行。因此,为了提高效率,会在进程中开启多个线程,每个线程可以并行的执行不同的任务。

        

          此外,在ios程序中,处理用户触摸事件、刷新界面等操作是必须放到主线程中实现的,因此那些比较耗费资源的,比如从网络获取数据、下载等操作可以放到子线程中,不然的话,很容易造成主线程阻塞,一旦主线程阻塞,就会出现卡顿的现象,影响用户体验。

        

          在ios中,使用多线程有三种方式,分别是:

        

        (1)NSThread

        

          NSThread是一种比较原始的使用线程的方式,它是轻量级的方式,与其他方式相比,能更直观的控制线程对象。但是通过这种方式,需要管理线程的生命周期,如果想实现同步,还需要加锁,会加大系统开销。

        

        (2)NSOperation和NSOperationQueue

        

        NSOperation以面向对象的方法封装了需要执行的操作,然后将这个操作放到一个NSOperationQueue中异步执行,不需要去管理线程与处理同步的问题。

        

        (3)Grand Centeral Dispatch

        

        简称GCD,是c语言的API。GCD中提供了一些新特性来实现设备多核的并行编程。

        

        在本篇文章,我们先来讲解一下NSThread的使用。

        

        NSThread

        

        NSThread是线程类,一个NSThread实例就代表是一个线程。

        

        获取主线程

        

        代码

        

        NSThread *mainThread = [NSThread mainThread];

        获取当前线程

        

        代码

        

        NSThread *currentThread = [NSThread currentThread];

        NSThread创建

        

        (1)动态方法:通过对象方法来创建线程,需要手动开启线程

        

        代码

        

        

        

[Java] 查看源文件 复制代码
//初始化线程
NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:#selector(startThread: ) object: #"ios"];
thread1.name = #"thread1";
//开启线程
[thread1 start];
 

        


        通过开启线程调用的方法

        

        代码

        

        
[mw_shl_code=java,true]
-(void)startThread: (NSString *)parm{
   
    NSThread *currentThread = [NSThread currentThread];
   
    for (int i=0; i

20

主题

7018

帖子

2148

金钱

手工艺人

发表于 2018-1-11 15:30:50 | 显示全部楼层
感谢分享,code4app有你更精彩

16

主题

7016

帖子

876

金钱

手工艺人

发表于 2018-1-11 15:34:24 | 显示全部楼层
写的真的很不错

14

主题

6978

帖子

1317

金钱

手工艺人

发表于 2018-1-11 15:38:01 | 显示全部楼层
感谢大神分享,必须顶!

0

主题

6974

帖子

-519

金钱

限制会员

发表于 2018-1-11 15:41:26 | 显示全部楼层
感谢分享,楼主V5~

20

主题

6990

帖子

2139

金钱

手工艺人

发表于 2018-1-11 15:49:26 | 显示全部楼层
mark,收藏了

23

主题

7014

帖子

1054

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 15:50:27 | 显示全部楼层
感谢大神分享,必须顶!
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表