`
hulunberbus
  • 浏览: 858128 次
文章分类
社区版块
存档分类
最新评论

iPhone 多线程编程

 
阅读更多

多线程之NSInvocationOperation


多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。

本次介绍NSOperation的子集,简易方法的NSInvocationOperation:

@implementation MyCustomClass

- (void)launchTaskWithData:(id)data
{
    //创建一个NSInvocationOperation对象,并初始化到方法
    //在这里,selector参数后的值是你想在另外一个线程中运行的方法(函数,Method)
    //在这里,object后的值是想传递给前面方法的数据
    NSInvocationOperation* theOp = [[NSInvocationOperation alloc] initWithTarget:self
                    selector:@selector(myTaskMethod:) object:data];

    // 下面将我们建立的操作“Operation”加入到本地程序的共享队列中(加入后方法就会立刻被执行)
    // 更多的时候是由我们自己建立“操作”队列
    [[MyAppDelegate sharedOperationQueue] addOperation:theOp];
}

// 这个是真正运行在另外一个线程的“方法”
- (void)myTaskMethod:(id)data
{
    // Perform the task.
}

@end

一个NSOperationQueue 操作队列,就相当于一个线程管理器,而非一个线程。因为你可以设置这个线程管理器内可以并行运行的的线程数量等等。下面是建立并初始化一个操作队列:

@interface MyViewController : UIViewController {

    NSOperationQueue *operationQueue;
    //在头文件中声明该队列
}
@end

@implementation MyViewController

- (id)init
{
    self = [super init];
    if (self) {
        operationQueue = [[NSOperationQueue alloc] init]; //初始化操作队列
        [operationQueue setMaxConcurrentOperationCount:1];
        //在这里限定了该队列只同时运行一个线程
        //这个队列已经可以使用了
    }
    return self;
}

- (void)dealloc
{
    [operationQueue release];
    //正如Alan经常说的,我们是程序的好公民,需要释放内存!
    [super dealloc];
}

@end

简单介绍之后,其实可以发现这种方法是非常简单的。很多的时候我们使用多线程仅仅是为了防止主线程堵塞,而NSInvocationOperation就是最简单的多线程编程,在iPhone编程中是经常被用到的。

分享到:
评论

相关推荐

    iphone多线程编程

    iphone多线程编程,值得一看的好书,iphone开发初学者必看。

    iphone多线程编程指南

    线程是单个应用中可以并发执行多个代码路径的多种技术之一。虽然更新的技术如操作对象(Operation objects)和Grand Central Dispatch(GCD),提供一个更加现代化和高效率的基础设施来实现多核并发,但是Mac OS X和...

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

    非常详细、经典的ios平台多线程知识详细的文档(其它平台的开发者也可以参考)。 两个中英文的高质量的pdf文件,也可做为英文学习用。

    iPhone 多线程

    iPhone 多线程 多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c...这篇文章主要从线程创建与启动、线程的同步与锁、线程的交互、线程池等等四个方面简单的讲解一下iphone中的多线程编程。

    iOS多线程编程指南

    比较详细的讲解了ios下多线程开发的技术,很实用。

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

    帮助学习关于OC中内存管理的知识点

    IOS编程中使用多线程

    不管使用任何编程语言,在实现多线程时都是一件很麻烦的事情。更糟糕的是,一旦出错,这种错误通常相当糟糕。然而,幸运的是apple从os x10.5在这方面做了很多的改进,NSThread的引入,使得开发多线程应用程序容易多...

    Pro iPhone Development with Swift 5, 2nd Edition

    在本文中,您将学习如何组织和调试SWIFT代码、使用Grand Central Dispatp进行多线程编程、在视图控制器之间传递数据以及为多种语言设计应用程序的技巧。这是最畅销的iPhone开发入门版SWIFT的后续工作。您还将看到...

    “售票系统”在iphone开发中的实现

    多线程的设计给程序员带来了很大的便利,在iphONe的开发中也想java那样可以方便的实现多线程编程。  于是,笔者在iphone的开发中实现多线程编程,这个例子是大家熟悉的Java教程中经典的“售票系统多线程”。  下面...

    模拟技术中的“售票系统”在iphone开发中的实现

    多线程的设计给程序员带来了很大的便利,在iphone的开发中也想java那样可以方便的实现多线程编程。  于是,笔者在iphone的开发中实现多线程编程,这个例子是大家熟悉的Java教程中经典的“售票系统多线程”。  下面...

    iOS开发文档(中文)-2

    内容包括:iPhone开发进阶;iPhone入门开发经验之谈;多线程编程指南;浅析iPhone用户界面设计精粹,从细节成就卓越

    iPhone开发教程合集

    包括了从入门到升入的教程:初学Objective-C、Cocoa基本原理指南、iOS5 ARC 完全指南、iOS图像处理、OpenGL ES学习、多线程编程指南、核心动画编程指南

    iOS 开发入门必备资料

    iOS人机界面指导手册.pdf ...多线程编程指南.pdf 初窥Xcode4 -- Xcode4主题样式、快捷键等常用设置.pdf From C++ to Objective-C.pdf 内存管理编程指南.pdf Cocoa 编码指南.pdf Objective-C培训资料.pdf

    并发编程之Operation Queue和GCD

    了解了Operation Queue是一个面向对象的并发编程接口,它支持并发数,线程优先级,任务优先级,任务依赖关系等多种配置,可以方便满足各种复杂的多任务处理场景

    精通iOS开发(第8版) 中文pdf扫描版 附源代码

    15 章 用 Grand Central Dispatch 进行多线程编程 364 第 16 章 图形与绘制 386 第 17 章 SpriteKit 制作简单游戏 405 第 18 章 轻点、触摸和手势 438 第 19 章 确定位置 457 第 20 章 设备方向与动作 472 第 21 章 ...

    cs193p-Winter-2015:这些是斯坦福工程学院提供的“使用 Swift 开发 iOS 8 应用程序”CS193P 课程的问题集,可在 iTunes U 上找到

    斯坦福工程 cs193p:使用 Swift 开发 iOS 8 应用程序这个 repo 包含我在斯坦福大学工程学院提供的 Paul ... 涵盖的其他主题包括动画、移动设备电源管理、多线程、网络和性能注意事项。支持或联系访问以查看更多信息。

    android开发资料大全

    在Android中实现多线程断点下载 Android提高篇内容整理 android移动开发案例精选 Android通过画线实现button效果 Android如何防止apk程序被反编译 Android 之 AIDL 和远程 Service 调用 Android 相对布局技巧 ...

Global site tag (gtag.js) - Google Analytics