import UIKit

let imageURLs = [“http://www.planetware.com/photos-large/F/france-paris-eiffel-tower.jpg“, “http://adriatic-lines.com/wp-content/uploads/2015/04/canal-of-Venice.jpg“, “http://algoos.com/wp-content/uploads/2015/08/ireland-02.jpg“, “http://bdo.se/wp-content/uploads/2014/01/Stockholm1.jpg“]
class DonwnLoader {
class func downLoadImageWithURL(url: String) -> UIImage! {
let image = NSData(contentsOfURL: NSURL(string: url)!)
return UIImage(data: image!)
}
}

class ViewController: UIViewController {

@IBOutlet weak var imageView1: UIImageView!
@IBOutlet weak var imageView2: UIImageView!
@IBOutlet weak var imageView3: UIImageView!
@IBOutlet weak var imageView4: UIImageView!
@IBOutlet weak var sliderValueLabel: UILabel!
var queue = NSOperationQueue()override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.
}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.
}@IBAction func didClickOnStart(sender: UIBarButtonItem) {queue = NSOperationQueue()let operation1 = NSBlockOperation { () -> Void inlet img1 = DonwnLoader.downLoadImageWithURL(imageURLs[0])NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void inself.imageView1.image = img1})}operation1.completionBlock = {print("operation1 completed! canceled: \(operation1.cancelled)")}queue.addOperation(operation1)let operation2 = NSBlockOperation { () -> Void inlet img2 = DonwnLoader.downLoadImageWithURL(imageURLs[1])NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void inself.imageView2.image = img2})}operation2.completionBlock = {print("operation2 completed! canceled: \(operation2.cancelled)")}queue.addOperation(operation2)let operation3 = NSBlockOperation { () -> Void inlet img3 = DonwnLoader.downLoadImageWithURL(imageURLs[2])NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void inself.imageView3.image = img3})}operation3.completionBlock = {print("operation3 completed! canceled: \(operation3.cancelled)")}queue.addOperation(operation3)let operation4 = NSBlockOperation { () -> Void inlet img4 = DonwnLoader.downLoadImageWithURL(imageURLs[3])NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void inself.imageView4.image = img4})}operation4.completionBlock = {print("operation4 completed! canceled: \(operation4.cancelled)")}queue.addOperation(operation4)}@IBAction func didClickOnCancel(sender: AnyObject) {queue.cancelAllOperations()}
@IBAction func sliderValueChanged(sender: UISlider) {self.sliderValueLabel.text = "\(sender.value * 100.0)"
}

}

iOS并行程序开发- GCD NSOperationQueue(1)相关推荐

  1. html ios编程工具,DevmyApp:傻瓜式iOS应用程序开发软件

    [搜狐IT消息]北京时间8月1日消息,<移动新发现>今天给大家介绍一款傻瓜式的iOS应用程序开发软件DevmyApp.有了该应用,您就可以创建.设计和开发自己的iOS应用程序,同时还可避免 ...

  2. 【并行算法】并行算法的设计技术和并行程序开发

    并行算法的设计技术 目前普遍使用的并行算法的设计技术: 1).流水线技术 将任务分割成许多子任务,每个处理器完成其中一个,且第一个处理器完成第一个子任务后,第二个处理器可以开始完成第二个子任务- 2) ...

  3. 2021 年 iOS 应用程序开发七种最佳语言

    原文地址 移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说, ...

  4. MPI并行程序开发设计----------------------------------并行编程模型和算法等介绍

    ---------------------------------------------------------------------------------------------------- ...

  5. 小程序容器化:基于uni-app的iOS小程序开发

    前言 相信越来越多小伙伴发现不少超级APP的页面都采用小程序开发了.例如支付宝客户端,首页有一个小程序中心的入口,支付宝上很多页面都是小程序了. 图1 支付宝小程序入口 第一次打开的一个新功能时,会出 ...

  6. C# 准备开始学习 并行程序开发

    [1]C#中 允许进行加密 System.Security.Cryptography;var aesM = new AesManaged();var md5M = MD5.Create(); 转载于: ...

  7. 基于Swift的iOS应用程序开发:录音及播放声音

    本文所涉及内容适合在SwiftUI架构下使用.文末提供有完整的封装好的类. 欢迎给我留言,或是写邮件给我: randolph.carter.xu@gmail.com 28300098@qq.com 一 ...

  8. iOS 应用程序开发官方中文手册

    http://wenku.baidu.com/view/f0c2b3e8b14e852458fb5749.html

  9. Android vs iOS 程序开发:我该选哪一个?

    移动应用程序开发是软件生产中增长最稳定的领域之一.几年前来移动应用程序数量激增,对快速便捷应用程序的需求一直在增长.仅是在2020年,据估计用户将大约87%的在线时间用于移动应用程序,也就是手机的Ap ...

最新文章

  1. C3P0_and_pro.properties配置文档代码
  2. core文件与gdb调试
  3. 【翻译】WPF中的数据绑定表达式
  4. 工业交换机如何判断性能的好坏呢?
  5. 【转】2.3async中必须始终返回Task(@Ron.liang)
  6. 佛说 :程序员你与我有缘。
  7. Android源码之路(二、AsyncTask)
  8. vue 给取data值_一些Vue相关的面试题,帮助求职者提升竞争力
  9. TCP\IP协议实践:wireshark抓包分析之链路层与网络层
  10. html mysql查询_mysql查询
  11. Android复习强化笔记(二)
  12. 关于nagios 邮件报警问题
  13. transformClassesWithProfilers-transformForDebug
  14. 微信小程序:全新独立后台月老办事处一元交友盲盒
  15. 三星S4使用体验(Markdown版)
  16. 苏东坡的起伏一生:就算人生不顺利,也要活的潇潇洒洒
  17. android 竖屏优先,android 强制设置横屏 判断是横屏还是竖屏
  18. Jquery仿IGoogle实现可拖动窗口(源码)
  19. Windows自带虚拟机的使用方法
  20. Mindjet MindManager2022完整版思维导图v22.1.234版本

热门文章

  1. java碰到边界变颜色_求教!!!小球撞墙怎么改变颜色。
  2. kl散度度量分布_强化学习新思潮1:值分布强化学习(04)
  3. Mind Control CodeForces - 1291C(思维)
  4. Obtain a Permutation(思维)
  5. TensorFlow2快速模型构建及tensorboard初体验
  6. 如何给Android添加可视化工具,可视化实现在手机上抓包 方便调试 OkNetworkMonitor...
  7. 『ACM-算法-二分法』信息竞赛进阶指南--二分法
  8. XML--XML作用
  9. OpenSitUp开源项目:零基础开发基于姿态估计的运动健身APP
  10. Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别