`
luckliu521
  • 浏览: 258926 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

iPhone多线程编程初体验

 
阅读更多
iPhone多线程编程初体验
2011-06-07 17:35 佚名 互联网 我要评论(0) 字号:T | T

多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。
AD:
找了很长时间IPhone下多线程的编程的内容, 用到的类是UIKit的中NSThread.。

在google过程中,发现很多文都惊喜地标题着类似< 多线程的OS4来了>, 这些想正向引导一下, 0S4的亮点在于多任务,一个任务为一个进程,也叫多进程, 而多线程在早期的IPHONEOS上都是有的.

IPHONE OS中任务的概念是一个应用, 在一个时间你只能做一件事情, 即不能同时玩游戏,同时上QQ. 而多任务的时候是可以这么做的.

流程大概如下:

1. 创建一个线程

[NSThread detachNewThreadSelect:@selector(BeginThread)    
toTarget:selft    
withObject:nil];   
2.线程里做两件,一件是后台处理耗时间的活(dosomethinglongtime),另一件是更新UI(UpdateUI)

view plaincopy to clipboardprint? 
(void) BeginThread{    
[self performSelectorInBackgroud:@selector(dosomethinglongtime)    
withObject:nil];    
[self perfomSelectorOnMainThread:@selector(UpdateUI)    
withObject:nil    
watUntilDone:NO];    
}   
3. 那UpdateUI的数据怎么来呢

view plaincopy to clipboardprint? 
-(void)dosomethinglongtime{    
// 修改共享变量 varProgress, varText等等    
}    
{void)UpdateUI{    
// 获得共享变量 varProgress, varText等等, 显示在界面上    
}
这样就完成了一个大概的流程,但是UpdateUI里不能用while(1),不然主线程会堵在UpdateUI的函数里,怎么办呢? Google了一个方法, UpdateUI的方法做了一下修改

这样的意思, 如果没线程没结束,过0.2秒再回到这个函数更新界面, 如此循环, 直到结束.

view plaincopy to clipboardprint? 
(void)UpdateUI{    
// 获得共享变量 varProgress, varText等等, 显示在界面上    
if(!finished)    
[NSTimer scheduledTimerWithTimeInterval:0.2 target:self    
selector:@selector(UpdateUI)  userInfo:nil repeats:NO];    
}   
以上IPhone多线程编程的一种方法, 当然还有人提议用NSOperation和NSOperationQueue,但我试了一把,没把效果试出来, 等有结果再回来更新. 嘿嘿.
分享到:
评论

相关推荐

    iphone多线程编程

    ### iPhone多线程编程知识点详解 #### 一、引言 在iPhone开发中,多线程编程是一项重要的技术。为了提高应用性能与响应性,合理地利用多线程可以显著提升用户体验。本篇将深入探讨iOS环境下的多线程概念、实现方法...

    iOS iPhone多线程编程指南(中英文版本的两个pdf文件

    这份"iOS iPhone多线程编程指南"详细讲解了如何在iPhone平台上有效地进行多线程操作,对于iOS开发者来说是一份宝贵的资源。以下是该指南可能涵盖的关键知识点: 1. **基础概念**:首先,指南会介绍多线程的基本概念...

    iOS多线程编程指南

    多线程编程是iOS应用开发中不可或缺的一部分,它能够让应用更高效地利用硬件资源,提高用户体验。然而,多线程编程也有其复杂性和挑战性,开发者需要仔细权衡各种多线程技术的选择,并确保正确地处理好线程间的同步...

    iphone多线程下载demo

    "iPhone多线程下载demo"是一个展示如何在iOS应用中实现多线程下载文件的实例。这个小例子旨在帮助开发者理解并实践多线程下载的原理和方法。 多线程下载通常涉及网络请求、后台处理和文件保存等多个步骤。在iOS中,...

    iphone开发多线程

    在iOS设备上,无论是iPhone还是iPad,多线程技术都可以显著提升用户体验。 iOS中实现多线程有多种方法: 1. **NSThread**:这是最基础的线程实现方式,允许开发者直接创建和管理线程。通过继承`NSThread`类并重写`...

    Iphone下多线程的开发

    随着移动设备性能的不断提升以及用户对应用程序功能和响应速度的要求越来越高,多线程编程已经成为iOS应用开发中的一个重要组成部分。本文将从以下几个方面详细介绍在iPhone下进行多线程开发的相关知识点: 1. **多...

    Objective-C高级编程 iOS与OS X多线程和内存管理

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Objective-C在iOS和OS X平台上的核心特性的书籍。本书重点聚焦于多线程和内存管理两个关键领域,对于iOS和macOS应用开发人员来说,这是理解和优化...

    iPhone开发之多线程入门示例程序

    接下来,NSOperation和NSOperationQueue提供了更高级的多线程编程模型。NSOperation是一个抽象基类,可以用来表示一个操作任务,而NSOperationQueue则负责管理和调度这些操作。相比于NSThread,NSOperation增加了...

    iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD

    ### iOS多线程编程技术详解:NSThread、Cocoa NSOperation、GCD ...通过上述内容,我们可以了解到iOS多线程编程的基本原理和技术选择,以及如何在实际项目中灵活运用这些技术来提升应用的性能和用户体验。

    iOS多线程网络请求,多线程下载图片

    在iOS应用开发中,多...通过实践这个例子,开发者可以更深入地理解iOS中的多线程技术和网络编程,提高应用性能和用户体验。在LoadImage项目中,你可能会看到这些概念的实际实现,从而进一步学习和掌握这些关键技术。

    多线程.rar

    在iOS开发中,多线程是一项至关重要的技术,它允许应用程序同时执行多个任务,从而提高应用的响应速度和用户体验。Object-C是Apple的Objective-C语言的缩写,它是iOS平台上进行原生应用开发的主要编程语言。本文将...

    30天精通iPhone手机编程 源代码

    在第15天左右,你可能会开始学习更高级的主题,例如多线程和异步编程,这在优化用户体验和处理后台任务时非常关键。GCD(Grand Central Dispatch)是苹果提供的多线程解决方案,它简化了并发编程。 在最后的10天,你...

    iphone基础编程2

    这是一份宝贵的教育资源,它不仅涵盖了基本的编程语法,还包括了iOS开发中的核心组件,如UIKit框架的使用、用户界面设计、事件处理、多线程以及数据持久化等。 【标签】:“iPhone” “iPhone”标签表明这门课程...

    AVFoundation iphone流媒体编程基础

    由于多媒体数据处理通常涉及到大量的计算工作,因此合理利用多线程技术可以显著提高程序的性能。在处理视频帧、音频解码等方面,多线程的应用非常关键。 **示例代码**: ```swift DispatchQueue.global(qos: ....

    iPhone_3D游戏编程指南

    本指南将涵盖Swift的基本语法、面向对象编程原则、内存管理、多线程编程以及如何使用SpriteKit和SceneKit框架来创建2D和3D游戏。 ### 四、优化游戏性能和用户体验 游戏的流畅性和响应速度直接影响到玩家的游戏体验...

    Iphone FTP编程实例

    为了提高文件传输速度,可以考虑使用多线程或异步处理,避免阻塞UI。同时,合理的文件缓存策略也可以提升用户体验。 总之,通过以上步骤,你可以实现一个基本的iPhone FTP客户端,进行文件的上传和下载。在实践中...

    30天精通IPhone手机编程

    6. **Day06:多线程与异步编程** 这一天会讲解多线程概念,包括GCD(Grand Central Dispatch)和NSOperationQueue,以及如何在后台执行任务,提升用户体验。 7. **Day07:动画与视图控制器** 动画是提升用户体验...

    iPhone高级编程-使用.NET C#(PDF中文扫描版)

    此外,还有关于多线程和异步编程的内容,这对于优化应用性能和用户体验非常关键。 iOS应用的测试和调试也是本书的重点,读者将学习如何使用Xcode的内置调试工具以及模拟器进行有效的测试。最后,书中的章节还会涉及...

    深入浅出iphone编程 (headfirst iphone development)11 chapter

    本章可能讲解如何使用GCD(Grand Central Dispatch)进行多线程编程,以避免阻塞主线程。 7. **动画与过渡效果**:iOS设备以其流畅的动画效果著称。这一部分可能会讲解如何使用Core Animation创建动态效果,以及...

Global site tag (gtag.js) - Google Analytics