iOS开发-多线程简介

简介:

多线程从概念上理解是指从软件或者硬件上实现多个线程并发执行的技术,简单点理解就是同一时间可以执行多个事情(比如说一边听歌一边码代码),听歌是一个线程,码代码是一个线程,如果是单核CPU的话,上面两个动作其实可以确切的理解为并发,也就是伪并行,只是两者相差的时间太快没有察觉。电脑现在一般都是双核的或者四核的,比以往的运算能有提高了不少,iOS中六种可以选择的操作线程的方式,具体方式如下:

iOS和OS X线程的底层实现机制是Mach线程,我们基本不会处理线程到这个级别,一般应用中可以使用的线程管理技术有Cocoa threads,POSIX threads,Mulitprocessing Services,通过我们选择实战的方式就是Cocoa threads。

 

iOS和OS X中的应用可以是单线程也可以是多线程的,iOS的应用相当于一个PC上常说的进程,可以扩展子线程,扩展出来的子线程拥有可执行的栈和运行时调度在内存中。线程可以与其他线程或者进程之间通信,一般都是通过I/O读写操作或者其他你需要的方式。同一个应用中的线程拥有同样的虚拟内存空间和访问应用程序进程的权利,简单理解可以理解为在方法中可以访问全局变量。网上很多文章都讨论多线程,不过很少说一些具体线程的分配的空间,一下也是本人从苹果官网找的一张关于线程空间分配的图片:

创建底层线程是相对简单的,不过一个必要的条件就是必须有一个函数或方法作为线程的主要入口点,这样我们就可以简单的实例化一个NSThread线程来展示一下效果,NSThread有两种实例方法:

1
2
3
4
5
NSThread  *myThread = [[ NSThread  alloc] initWithTarget: self
                                              selector: @selector (methodTask)
                                                object: nil ];
 
[ NSThread  detachNewThreadSelector: @selector (methodDetachTask) toTarget: self  withObject: nil ];

调用方法:

1
2
3
4
5
6
-( void )methodTask{
     NSLog (@ "NSTread线程的调用" );
}
-( void )methodDetachTask{
     NSLog (@ "Detach线程的调用" );
}

参数解释:

selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target  :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil;

如果你当前主线程正在运行,你想发送消息给主线程,可以通过performSelectorOnMainThread执行:

1
[ self  performSelectorOnMainThread: @selector (mainTask) withObject: nil  waitUntilDone: YES ];

 调用方法:

1
2
3
-( void )mainTask{
     NSLog (@ "performSelectorOnMainThread线程的调用" );
}

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4282754.html,如需转载请自行联系原作者

相关文章
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
1月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
143 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
2月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
90 11
|
2月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
145 66
|
2月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
173 3
|
2月前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
3月前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
3月前
|
API Android开发 iOS开发
深入探索Android与iOS的多线程编程差异
在移动应用开发领域,多线程编程是提高应用性能和响应性的关键。本文将对比分析Android和iOS两大平台在多线程处理上的不同实现机制,探讨它们各自的优势与局限性,并通过实例展示如何在这两个平台上进行有效的多线程编程。通过深入了解这些差异,开发者可以更好地选择适合自己项目需求的技术和策略,从而优化应用的性能和用户体验。
|
3月前
|
安全 IDE Swift
探索iOS开发之旅:从初学者到专家
在这篇文章中,我们将一起踏上iOS开发的旅程,从基础概念的理解到深入掌握核心技术。无论你是编程新手还是希望提升技能的开发者,这里都有你需要的指南和启示。我们将通过实际案例和代码示例,展示如何构建一个功能齐全的iOS应用。准备好了吗?让我们一起开始吧!
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
204 0

热门文章

最新文章