`

ios多线程编程(二)

    博客分类:
  • ios
ios 
阅读更多

ios多线程编程

  1.NSThread

       

   每个iOS应用程序都有个专门用来更新显示UI界面、处理用户的触摸事件 的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验。一般的解决方案就是将那些耗时的操 作放到另外一个线程中去执行,多线程编程是防止主线程堵塞,增加运行效率的最佳方法。

 

 2.NSThread初始化

  1)动态方法

  一个NSThread实例代表一个线程

  - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

 

    // 初始化线程  
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];  
    // 设置线程的优先级(0.0 - 1.0,1.0最高级)  
    thread.threadPriority = 1;  
    // 开启线程  
    [thread start];  

  参数解析:

 

 

   selector :线程执行的方法,这个selector最多只能接收一个参数
   target :selector消息发送的对象
   argument : 传给selector的唯一参数,也可以是nil

 

 

 

  2)静态方法

  + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

 

[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
// 调用完毕后,会马上创建并开启新线程

 

 

  3)隐式创建线程的方法

  [self performSelectorInBackground:@selector(run) withObject:nil];

 

 3.获取当前线程 

  NSThread *current = [NSThread currentThread];

 

 4.获取主线程

  NSThread *main = [NSThread mainThread];

 

 5.暂停当前线程

 

// 暂停2s
[NSThread sleepForTimeInterval:2];

// 或者
NSDate *date = [NSDate dateWithTimeInterval:2 sinceDate:[NSDate date]];
[NSThread sleepUntilDate:date];

 

  6.线程间的通信

  1)在指定线程上执行操作

  

[self performSelector:@selector(run) onThread:thread withObject:nil waitUntilDone:YES];

  2)在主线程执行操作

 

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

 

  3)在当前线程执行操作

 

[self performSelector:@selector(run) withObject:nil];

 

  多线程编程总结

    iOS支持多个层次的多线程编程,层次越高的抽象程度越高,使用也越方便,也是苹果最推荐使用的方法。下面根据抽象层次从低到高依次列出iOS所支持的多线程编程方法:

1.Thread :是三种方法里面相对轻量级的,但需要管理线程的生命周期、同步、加锁问题,这会导致一定的性能开销
2.Cocoa Operations:是基于OC实现的,NSOperation以面向对象的方式封装了需要执行的 操作,不必关心线程管理、同步等问题。NSOperation是一个抽象基类,iOS提供了两种默认实现:NSInvocationOperation和 NSBlockOperation,当然也可以自定义NSOperation
3.Grand Central Dispatch(简称GCD,iOS4才开始支持):提供了一些新特性、运行库来支持多核并行编程,它的关注点更高:如何在多个cpu上提升效率

 

分享到:
评论

相关推荐

    iOS 多线程编程指南 pdf

    iOS多线程编程指南是一份深入介绍iOS平台下多线程编程技术的文档。文档主要涵盖的技术点包括NSThread、NSOperation以及Grand Central Dispatch(GCD),这些技术是iOS开发者在开发应用程序时常用的技术。 首先,...

    ios 多线程编程指南

    iOS多线程编程指南所涉及的知识点涵盖了多线程编程在iOS平台的应用,包括线程概念、线程管理、RunLoop对象、线程同步等核心概念以及具体实现技术。鉴于文档内容丰富,这里将详细解读并阐述上述知识点。 ### 1. 线程...

    ios多线程编程

    iOS多线程编程是iOS开发中的一个重要技能,对于提升应用程序的性能和用户体验至关重要。在iOS平台上,多线程编程可以通过多种技术实现,包括NSThread、Grand Central Dispatch(GCD)、Operation Objects等。本文档...

    ios多线程开发的常用四种方式和基本使用

    本文将深入探讨四种常用的iOS多线程开发方式:pthread、NSThread、NSOperation及NSOperationQueue,以及Grand Central Dispatch(GCD)。 首先,让我们了解下pthread。pthread是POSIX线程库,它在iOS中被用于跨平台...

    ios多线程编程指南

     “关于多线程编程”介绍了多线程的概念和它们在应用设计里面的角色。  “线程管理”提供了关于 Mac OS X 上面线程技术的相关信息,并且教你如果 使用它们。  “Run Loops” 提供有关如何管理在辅助线程中的...

    ios多线程编程文档(翻译版)

    iOS多线程编程是iOS开发中的一个重要方面,它允许应用程序同时执行多个代码路径,以实现更高效的计算和响应。本文档是由Apple公司出品的官方多线程编程指南的翻译版本,由謝業蘭【老狼】翻译,并获得了有米移动广告...

    IOS多线程编程的3种实现方法

    iOS中有以下3种多线程编程方法: NSThread Grand Centeral Dispatch(GCD) NSOperation和NSOperationQueue 1.NSThread 这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理线程的...

    多线程编程指南

    本指南旨在为iOS开发者提供一个多线程编程的全面介绍。多线程是现代操作系统中的一个重要特性,它允许应用程序同时执行多个任务,从而提高效率并充分利用计算资源。在iOS开发中,合理利用多线程不仅能够提升应用性能...

    iOS多线程Demo

    在iOS开发中,多线程是一项至关重要的技术,它能够帮助开发者实现应用程序的高效运行和流畅的用户体验。本文将深入探讨“iOS多线程...通过这个Demo,开发者可以更深入地理解多线程编程,提升iOS应用的性能和用户体验。

    iOS多线程编程

    本文将深入探讨iOS中的多线程编程,包括GCD(Grand Central Dispatch)、NSOperation、NSThread的使用,以及异步和同步下载、Block的运用,以及ASIHttpRequest类库的使用。 首先,GCD是Apple推出的一种多线程解决...

    iOS多线程编程指南(一)关于多线程编程 - 51CTO.COM1

    本文将作为iOS多线程编程指南的第一部分,深入探讨多线程的基本概念、常用技术以及最佳实践。 1. **多线程基础** 多线程是指在一个应用程序中同时执行多个独立的执行流,每个执行流被称为一个线程。在iOS中,多...

    ios 多线程编程指南.pdf

    ### iOS多线程编程知识点详解 #### 一、多线程编程概述 多线程编程是一种软件技术,它允许在单个应用程序内并行执行多个代码路径。这有助于提高应用程序的响应性和整体性能,尤其是在利用现代多核处理器的能力时。...

    iOS开发学习之iOS多线程和RunLoop.pdf

    在iOS开发中,多线程编程是一个非常重要的概念,它允许应用程序同时执行多个操作,而不会相互干扰,从而提高程序的性能和响应能力。另外,RunLoop是iOS中一个非常重要的概念,它是事件接收循环,用于处理异步事件,...

    iOS并发编程指南与多线程编程指南合集

    以下是对标题“iOS并发编程指南与多线程编程指南合集”以及描述中提及知识点的详细解读: 1. **并发编程**:并发编程是指在一个时间段内,系统可以执行多个任务,而这些任务可以是同时进行的,也可以是交替进行。在...

    iOS 多线程编程指南 中文版

    ### iOS多线程编程指南知识点概述 #### 一、多线程编程介绍 - **多线程的概念**:多线程是指在一个程序中同时运行多个线程的能力,这些线程可以独立执行不同的任务或者并行处理同一任务的不同部分。通过多线程,...

Global site tag (gtag.js) - Google Analytics