`
pcajax
  • 浏览: 2108533 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

移动开发在路上-- IOS移动开发系列 多线程二

 
阅读更多

 

最近太忙没太多的时间,忙碌的码农生活空下来一点时间,都会挤出来看一些技术或者咨询的文章,废话不多说,直奔主题。

接着上一次的继续说。

定时器在多线程的使用

NSRunLoop 是线程相关的基础框架的一部分。一个run loop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。

线程的生命周期存在五个状态:新建、就绪、运行、阻塞、死亡。

NSRunLoop 可以保持一个线程一直为活动状态,不会马上销毁掉。

一般在(延时调用一个方法、定时器)

run loop 属于一个调度 例如延时5s    run loop ji'lu记录这个时间去延时调用这个方法

定时器   例如每隔1s来执行一个事件

那么今天我们主要说一下定时器在多线程的使用

在多线程里边如果要使用定时器必须开启RunLoop,因为只有开启RunLoop保持线程为活动状态,才能保持定时器能不断执行。

有些面试题上边可能会问,一个定时器1s精不精确,是不是真的一秒钟调用一次,有没有延迟?那么为什么会有延时呢?一个定时器在主线程上边,每隔一秒调用一次,因为是主线程,他做的事情特别多,难免会有阻塞的情况,加入主线程阻塞了0.1秒那么你这个定时器就不准确了。开一个多线程去运行定时器,那么肯定是精确地。

献给一段示例代码

-(void)runThread{

  NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

  [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeAction) userInfo:nill repeats:YES];

  [[NSRunLoop currentRunLoop] run];//这里一定要RunLoop一下要不然程序走到这里一直走下去程序就结束掉了、所以说必须RunLoop一下、来保持这个线程的活跃

}

创建新项目

项目的创建,我在这里就不再说了上一篇文章中说的很详细,大家应该能看得明白,没看过的可以看一下

移动开发在路上-- IOS移动开发系列 多线程一

代码如下

 

线程直接就结束掉了 

 

把代码打开

在运行

 

是不是达到了我们的效果

 

 

期待大家的继续支持,只有大家的鼓励才是我最大的动力!

分享快乐!支持我吧!觉得有用的话记得点推荐一下哦!

分享到:
评论

相关推荐

    移动应用开发-iOS开发示例教程之多图片多线程下载.zip

    移动应用开发_iOS开发示例教程之多图片多线程下载

    iOS移动开发从入门到精通.epub

    第二篇为进阶篇,主要介绍了Alamofire网络服务、数据的持久化、多线程、CoreText、CoreImage、Storyboard、自动化测试、性能分析、本地化、加密与安全等实用技术。第三篇为实例篇,通过对实体层、表现层和逻辑层三层...

    Delphi 高级编程资料40本:串口语音通信编程移动开发数据通信与网络教程(四)

    Delphi 编写多线程.pdf Delphi 网络高级编程.pdf Delphi[1].下深入Windows核心编程.pdf Delphi_10.1_Berlin_手册_简体中文版.pdf Delphi下深入Windows核心编程.pdf Delphi下用Intraweb开发WEB程序应用实战_Password_...

    iOS高级程序员进阶——多线程编程核心技术模式篇

    在iOS开发中,实现多线程的的方式有很多种,常用的有pthread、NSThread、GCD与NSOperation。在实际应用中,多线程技术也有着非常多的使用场景,比如异步的网络请求、异步的图片加载、后台执行复杂任务等等。 在iOS...

    GoldHouse-for-iOS:iOS APM

    多线程 -(来源:京东零售技术) 本地持久化 非原子和原子 - - App卡顿检测 -(来源:MrPeak杂货铺) -(来源:微信移动) App性能检测 -(来源:美团) 总结-(来源:WeRead团队博客) -(来源:戴铭) -(来

    AES-Java-iOS-Android.zip

    多线程支持:Java内建对多线程编程的支持,使并发编程变得更加简单直接。 动态性:Java可以通过反射、注解等机制实现在运行时动态加载类和修改行为,增加了程序的灵活性。 综上所述,Java凭借其强大的特性和广泛...

    《iOS6开发指南》精彩书摘

    iOS中开发性能优化方法,其中包括:内存优化、资源文件优化、延迟加载、持久化优化、使用可重用对象、多线程以及程序编译参数等方面介绍性能优化。 第18章“管理好你的程序代码——代码版本控制”。学习如何使用Git...

    学习iOS锁、GCD多线程的一个售票系统.zip

    操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...

    iOS开发实习面试题目

    你⽤用哪些办法实现过多线程? GCD和NSOperationQueue的⽐比较,各⾃自优缺点是什么,平时你是怎么使⽤用的? weak,assign,strong的意义和区别? atomic,nonatomic的意义和区别? OC中有没有多继承?OC中怎么实现多...

    使用Objective-C进行iOS移动开发

    此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用...

    iOS原理篇-内存管理/运行时/RunLoop/GCD及多线程

    本课程主要讲解iOS开发的一些中高级原理性的知识,...主要包括:内存管理、RunTime、RunLoop、GCD与多线程。 对原理的讲解会从源码分析的角度深入剖析,除录播的视频外,每章节还会配有相应的PPT、代码及相关参考文档。

    毕业设计&课程设计-这是一个简易多线程的文件传输软件.zip

    这是一个简易多线程的文件传输软件。 这是一个·QT可视化文件传输系统 项目实现了文件上传下载,用户登录注册登出,前端显示服务器上的文件夹内容等相关功能。 qt项目,工具源码,适合毕业设计、课程设计作业,所有...

    iOS开发从入门到精通 [2021版]

    本视频教程拥有233节课程,包含iOS开发的方方面面:iOS开发基础理论知识、 视图、视图控制器、多媒体、数据处理、常用插件、信用卡卡号识别、自动化测试、网络访问、多线程、ShareSDK社会化分享、CoreImage、...

    QT项目为三维加工系统设计,主要仪器包括二维振镜,PI一维移动平台.zip

    QT项目为三维加工系统设计,主要仪器包括二维振镜,PI一维移动平台,索雷博光快门,大恒光快门、IDS工业CCD等,其中技术包括多线程、dll函数调用、实时显示等 软件开发设计:PHP、QT、应用软件开发、系统软件开发、...

    ReactNative移动开发工具-其他

    在幕后,React Native在主线程之外,在另一个背景线程里运行JavaScript引擎,两个线程之间通过一批量化的async消息协议来通信(有一个专门的React插件)。 UI方面React Native提供跨平台的类似Flexbox的布局系统,还...

    ReactNative移动开发工具 v0.71.7

    在幕后,React Native在主线程之外,在另一个背景线程里运行JavaScript引擎,两个线程之间通过一批量化的async消息协议来通信(有一个专门的React插件)。 UI方面React Native提供跨平台的类似Flexbox的布局系统,...

    毕设&课设&项目&实训-基于Vulkan的多线程渲染引擎,采用C#9.0开发,支持.Net5.0.zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

Global site tag (gtag.js) - Google Analytics