作家
登录

iOS开发3年只用5分钟搞定面试官

作者: 来源: 2018-03-27 12:52:54 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!


1 主办法(在琅绫擎设置代劳)

序言

假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。正人生非异也,善假于物也。

我们曾借白茶清欢等一小我,曾借花开花落叹宠辱不惊。

法度榜样(Program)是一个可以运行的文件, 一个法度榜样至少有一个过程,一个过程至少有一个线程,即主线程

正文

  • 法度榜样(Program)是一个可以运行的文件, 一个法度榜样至少有一个过程,一个过程至少有一个线程,即主线程
  • 过程:正在进行的法度榜样被称为过程,负责法度榜样运行的内存分派,每个过程都有本身的自力虚拟内存空间.一个法度榜样的一次运行,在履行过程中拥有自力的内存单位,而多个线程共享一块内存
  • 什么是线程:线程是过程中的根本单位(可履行的代码段),线程可以并发运行,进步履行效力
  • 创建线程的目标:就是为了开启一条新的可履行的代码段,与主线程中的代码实现同时运行,防止界面假逝世,是实现异步的技巧的重要手段,比如收集异步下载

一 Runloop常识点弥补

1 在模仿器中拖拽UITextView的时刻对RunLoop模式的影响

代码块和解释一:

  1. //因为该办法设置了RunLoop的运行模式为两种,当用户滑动UITextView的时刻RunLoop切换模式并且持续履行,所以能设置出图片 
  2.     [self.imageView1 performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"/Users/xiaofeng/Desktop/Snip20160319_18.png"] afterDelay:5.0 inModes:@[UITrackingRunLoopMode,NSDefaultRunLoopMode]]; 

代码块和解释二:

—-对该办法的解释: 该办法运行的时刻回受到runloop运行模式的影响,默认设置为defaulmode,当拖拽的时刻,runloop切换模式,所以不履行

  1. //该办法的履行会受到外界的影响,当用户滑动UITextView的时刻,并不会经由2秒设置图片,runloop运行的模式是默认的模式,当用户滑动UITextView的时刻,切换了模式,所以不会设置图片 
  2.     [self.imageView1 performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"/Users/xiaofeng/Desktop/Snip20160319_15.png"] afterDelay:2.0]; 

2 问题:怎么能让一个线程一向活着,然后在特定的情况下,让线程跳转义务

二 常驻线程

3 包管线程不逝世的办法:创建一个RunLoop轮回;然后设置数据源或者准时器

  • 3.1 第一种办法:开启一个逝世轮回—>比如while逝世轮回,保持线程不逝世亡,如许固然能包管线程不逝世,然则不克不及包管线程去履行其它的义务(弗采取)
  • 3.2 第二种办法:开启一个RunLoop轮回,也可以包管让线程不逝世,然则开启了须要手动履行,并且须要设置运行模式,不然单单只是开启了RunLoop轮回,并没有设置模式的话,RunLoop开启了就直接退出,并不会一向往下履行(开启RunLoop须要完成指定的三个步调)

4 需求:当点击创建线程的按钮的时刻,开端创建一条线程,然后点击让子线程开端干其他的工作的时刻,子线程开端履行其他工作

1 创建子线程按钮:

  1. #pragma mark - 创建子线程按钮 
  2. - (IBAction)creatBtnClick:(id)sender 
  3.     //创建子线程 
  4.     NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(task) object:nil]; 
  5.       
  6.     [thread start]; 
  7.     //如不雅不参加这句代码,线程在履行完task办法之后就会急速被释放,这里写这句代码目标就是包管线程不逝世,能持续履行其他的义务 
  8.     self.thread = thread; 

创建子线程按钮中的办法实现: 在task办法中我们只请求打印当前哨程就行.

让子线程开端持续工作:

  1. #pragma mark - 让线程持续工作 
  2.   
  3. - (IBAction)goOnBtnClick:(id)sender 
  4.     [self performSelector:@selector(task2) onThread:self.thread withObject:nil waitUntilDone:YES]; 
  1. 具体的操作步调: 
  2. 2.1 肯定请求路径 
  3. 2.2 获取主机名 
  4. 2.3 DNS域名解析 
     1/10    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      2018边缘数据中心关键之年!

    沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! 所谓边沿数据中间,指的就是:处于>>>详细阅读


    本文标题:iOS开发3年只用5分钟搞定面试官

    地址:http://www.17bianji.com/lsqh/40950.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)