`
miss大为
  • 浏览: 82720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【无限互联】iOS开发之多线程开发

 
阅读更多

本节要点:

1.多线程的概念

2.掌握iOS中多线程的多种创建方式

 

多线程的概念

 

 每个进程是一个应用程序,都有独立的内存空间

 一个进程中的线程共享其进程中的内存和资源

 使用多线程技术,提高CPU的使用率,防止主线程堵塞。 

 多个线程可以提高应用程序在多核系统上的实时性能

 每个程序都有⼀一个主线程,程序启动时,创建主线程,调用main 函数来启动程序。

 主线程的生命周期和程序是绑定的,程序结束时,主线程停止。

 任何有可能堵塞的任务不要在主线程执行,主线程不流畅会导致 程序界面的不流畅。(:网络访问、大文件写入磁盘、

清理缓存,等等)


多线程的创建和启动

第1种方式
[plain] view plaincopy
  1. NSThread *t = [[NSThread alloc] initWithTarget:self selector:@selector(mutableThread) object:nil];  
  2. [t start];  

第2种方式
[plain] view plaincopy
  1. [NSThread detachNewThreadSelector:@selector(mutableThread) toTarget:self withObject:nil];  

第3种方式
[plain] view plaincopy
  1. [self performSelectorInBackground:@selector(mutableThread) withObject:nil];  

第4种block语法开启一个线程
[plain] view plaincopy
  1. NSOperationQueue *threadQueue = [[NSOperationQueue alloc] init]; [threadQueue addOperationWithBlock:^(void) {  
  2.         NSThread *t = [NSThread currentThread];  
  3.         if (![t isMainThread]) {  
  4.               NSLog(@"是多线程");   
[plain] view plaincopy
  1. }  

第5种方式线程池
[plain] view plaincopy
  1. NSOperationQueue *threadQueue = [[NSOperationQueue alloc] init]; NSInvocationOperation *op = [[NSInvocationOperation alloc]  
  2.                                  initWithTarget:self  
  3.                                selector:@selector(mutableThread) object:nil];  
  4.     [threadQueue addOperation:op];  

第6种方式GCD,适用于多核开发
[plain] view plaincopy
  1. dispatch_queue_t network_queue;      
  2.       
  3. network_queue = dispatch_queue_create("com.myapp.network", nill);     
  4.   
  5. dispatch_async(network_queue, ^{        
  6.     UIImage *cellImage = [self loadMyImageFromNetwork:image_url];        
  7.     NSLog("多线程");      
  8.             
  9. } );   
1
1
分享到:
评论

相关推荐

    无限互联_IOS视频教程_OC教程_课件、源码

    【标题】:“无限互联_IOS视频教程_OC教程_课件、源码”这一资源包主要针对的是iOS应用开发的学习,特别是Objective-C(OC)语言的教学。它包含了一系列的视频教程和配套的源码,旨在帮助初学者或者有经验的开发者...

    cisco 7200 ios

    "Mz"代表多线程架构,这是Cisco IOS的一种内存管理模型,它允许多个进程在不同的CPU内核上同时运行,提高系统性能。 在实际操作中,升级或恢复Cisco 7200路由器的IOS通常涉及以下步骤: 1. **准备工作**:首先,...

    无线互联Objective-C

    《无线互联Objective-C》这份资料深入浅出地涵盖了Objective-C这一iOS开发中的核心语言,旨在帮助初学者理解和掌握其精髓。下面将详细讲解其中涉及的关键知识点。 首先,我们来看看`chapter5_类别(Category)、...

    2018高职组《移动互联网应用软件开发》题库

    学习如何使用Android SDK进行API调用,进行权限管理,并实现多线程和异步任务。 2. iOS开发:掌握Xcode IDE,理解Storyboard和AutoLayout,熟练使用Swift语言进行程序编写,理解MVC设计模式,以及Core Data或SQLite...

    即时通讯系统源码 飞机即时通讯源码 适配iOS安卓系统源码.zip

    适配iOS和Android系统意味着开发者需要考虑两种平台的差异,如UI设计规范、内存管理、多线程处理等,并且可能需要使用跨平台框架如React Native或Flutter来简化开发过程。 总的来说,飞机即时通讯源码是一个包含...

    计算机:鸿蒙OS2.0正式发布,“万物互联”时代华为软件生态基座将夯实.zip

    鸿蒙OS2.0的发布标志着华为在操作系统领域迈出的重要一步,这不仅是对谷歌Android和苹果iOS系统的有力挑战,更是华为构建自身软件生态体系的关键里程碑。在这个“万物互联”的新时代,鸿蒙OS作为华为的软件生态基座...

    【圈里求职】通用简历 (18).docx

    4. **多线程处理**:求职者熟练掌握多线程操作,包括NSThread、NSOperation和Grand Central Dispatch (GCD),这对于优化应用程序性能和响应性至关重要。 5. **高级UI内容**:他精通内存管理,包括MRC(手动引用计数...

    移动应用开发技巧以及入门教程知识点总结.docx

    - **并发处理**: 多线程、回调机制、观察者模式、协程等技术都是实现异步编程的有效手段,能够显著提升应用的响应速度和用户体验。 #### 十二、性能优化 - **资源消耗**: 内存、CPU、电量、网络流量等方面的性能...

    鸿蒙大爆发,鸿蒙工程师工资大涨.zip

    这需要工程师们具备扎实的分布式系统知识,包括但不限于网络通信协议、多线程编程以及数据同步机制等。 首先,鸿蒙工程师需要理解操作系统的基本原理,如进程管理、内存管理、文件系统以及设备驱动等。在鸿蒙系统中...

    基于协程的编程方式在移动研发的最佳实践.pdf

    多线程的使用虽然方便,但同时也引入了许多问题,比如野指针、容器类崩溃、过度释放等。这些问题在多线程环境下尤为突出,可能导致应用崩溃,严重影响用户体验。为了解决这些问题,开发者可能会采用各种同步机制,如...

    Multicore and System Software

    例如,Linux 内核支持多线程和并行计算,通过PVM、MPI、OpenMP等技术实现进程间通信和并行运算。此外,编译器和工具链(如gcc、binutils、gdb等)需要针对多核进行优化,以生成能够充分利用多核优势的代码。 在多核...

    网易技术笔试.7z

    网易作为一家知名的互联网企业,其技术笔试环节通常会涵盖计算机科学、软件开发、算法设计、数据结构、网络协议、操作系统等多个方面的知识。因此,我们可以深入探讨这些领域的核心概念和重要知识点。 1. 计算机...

    .NET技术介绍 PPT

    - **.NET 4.0**:2010年发布,带来了多线程和并行计算的支持,以及其他多项改进。 #### .NET 3.0/3.5/4.0的变化 - **WPF (Windows Presentation Foundation)**:一种全新的图形用户界面系统,支持基于XAML的标记...

    计算机行业点评报告:鸿蒙OS2发布,打造IoT时代的超级系统.zip

    此外,鸿蒙OS2拥有快速迭代的能力,通过华为的方舟编译器,开发者可以使用多种编程语言进行开发,并且能够实现一次编写,多端部署,大大降低了开发成本和时间。方舟编译器的引入,使得鸿蒙OS2对于应用开发者具有更高...

    iOSAbort问题系统的解决方案.docx

    在移动应用开发领域,尤其对于iOS平台的应用程序而言,崩溃问题(Crash)一直是影响用户体验的重要因素之一。崩溃不仅可能导致用户流失,还可能损害品牌声誉及降低广告主对应用的信任度。在众多崩溃类型中,“Abort...

    VB.net 可视电话程序

    5. **多线程处理**:为了保证用户界面的流畅性,音频和视频的处理通常在后台线程中执行,避免阻塞UI主线程。 6. **同步机制**:多人聊天和会议需要考虑多用户间的同步问题,确保每个参与者都能准确无误地接收和播放...

    在linux下实现音视频通讯

    总结来说,在Linux下实现音视频通讯需要理解Anychat for Linux SDK提供的API,熟悉音视频编解码原理,以及掌握网络编程和多线程技术。通过这些技术,开发者可以创建出高效、稳定的音视频通讯应用,满足不同用户的...

    这一动作让鸿蒙加快独立步伐.zip

    1. **软件生态建设**:华为通过开放 HarmonyOS 应用开发工具和API,鼓励开发者为鸿蒙系统开发应用,打造丰富的应用生态,以吸引更多的用户和企业采用鸿蒙系统。 2. **硬件合作伙伴拓展**:华为积极与各种硬件厂商...

    基于协程编程在移动端研发的最佳实践.pptx

    首先,传统的多线程编程虽然方便,但容易导致一系列问题,如野指针、容器类崩溃和过度释放,这些问题在大型应用(如手机淘宝)中尤为突出。为了处理这些崩溃问题,开发者可能不得不牺牲应用性能,采用同步API可能...

    EasyDSS流媒体服务器如何解决5G超高清4k视频直播卡顿的问题解决方案.docx

    1. **多屏播放**:支持Flash和HTML5播放,适配各种操作系统,如Windows、Android、iOS和Mac。 2. **自由组合**:与其他EasyDSS软件无缝对接,也可与第三方平台结合,提供灵活的集成方案。 3. **支持云架构**:可与...

Global site tag (gtag.js) - Google Analytics