一:创建线程,NSThread创建线程常用的三种方式:

     //1:手动创建启动
let thread:NSThread = NSThread(target: self, selector:"doSomething:", object: "param")
thread.name = "childThread1" //手动创建线程的方式可以设置线程的名称
thread.start()
//2:创建完成自动start
NSThread.detachNewThreadSelector("doSomething:", toTarget: self, withObject: "param")
//3 隐式创建自动start
self.performSelectorInBackground("doSomething:", withObject: "param")

二:NSThread常用函数

     //1. 获取主线程
NSThread.mainThread()
//2. 获取当前线程
NSThread.currentThread()
//3. 线程睡眠
NSThread.sleepForTimeInterval(<#T##ti: NSTimeInterval##NSTimeInterval#>)
NSThread.sleepUntilDate(<#T##date: NSDate##NSDate#>)

三:线程同步以及线程安全

      //线程同步:防止多个线程抢夺统一资源造成的数据安全问题
//给代码块加锁,保证线程安全
let lock:NSLock = NSLock()
lock.lock()
//something
lock.unlock()

四:线程间通信

     //保证线程安全,在子线程完成后回到主线程更新UI   waitUntilDone表示是否等待完成,如果为true,则回到主线程完成操作后,在执行下面的代码
self.performSelectorOnMainThread("doSomething", withObject: "param", waitUntilDone: false)
//如果只更新单个控件,可使用以下更简便的方法,比如设置图片
let imageView:UIImageView=UIImageView()
imageView.performSelectorOnMainThread("setImage:", withObject: UIImage(), waitUntilDone: false)

五:线程延时执行

     // 延迟执行(注意,延迟执行请勿使用线程睡眠来实现,会阻塞当前线程)
self.performSelector("doSomething:", withObject: "param", afterDelay: )

完!

iOS开发:Swift多线程NSThread的使用的更多相关文章

  1. iOS开发Swift篇(02) NSThread线程相关简单说明

    iOS开发Swift篇(02) NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThread在s ...

  2. iOS开发之多线程(NSThread、NSOperation、GCD)

    整理一些多线程相关的知识. 并行 & 并发 1.并行:并行是相对于多核而言的,几个任务同时执行.2.并发:并发是相对于单核而言的,几个任务之间快速切换运行,看起来像是"同时" ...

  3. 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明

    李洪强iOS开发Swift篇---12_NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThre ...

  4. iOS开发之多线程技术

    本篇争取一篇讲清讲透,依然将通过四大方面清晰的对iOS开发中多线程的用法进行详尽的讲解: 一.什么是多线程 1)多线程执行原理 2)线程与进程 3)多线程的优缺点 二.我们为什么要用多线程编程技术 三 ...

  5. iOS开发-多线程开发之线程安全篇

    前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象.同一个变量.同一个文件和同一个方法等.因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安 ...

  6. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

    简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...

  7. ios开发之多线程---GCD

    一:基本概念 1:进程:正在运行的程序为进程. 2:线程:每个进程要想执行任务必须得有线程,进程中任务的执行都是在线程中. 3:线程的串行:一条线程里任务的执行都是串行的,假如有一个进程开辟了一条线程 ...

  8. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  9. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

  10. iOS开发Swift篇—(三)字符串和数据类型

    iOS开发Swift篇—(三)字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http://www ...

随机推荐

  1. textview点击后selector的pressed无效果

    原因: 需要配置  android:clickable="true" 这个跟开发环境有关,我之前用的android studio 就不需要这一项,默认可以点击. ********* ...

  2. Android SDK Android NDK 官方下载地址

    Android NDK r6b Windows http://dl.google.com/android/ndk/android-ndk-r6b-windows.zip Mac OS X(intel) ...

  3. 一些牛逼的统计SQL

    SQL 1.查询连续2天,每天发帖大于等于2次的用户 SELECT USER_ID FROM ( SELECT USER_ID, DATEDIFF(CREATE_TIME, '1971-01-01') ...

  4. 常用的Eclilpse插件列表以及安装方式总结

    Eclipse常用插件的安装方式总结: 1.Maven Integration for Eclipse WTP     作用:用来方便开发和使用maven项目.     安装方式:Eclipse Ma ...

  5. <顶>vim快捷键映射Map使用

    问题描述: 使用vim中的快捷键映射map,可以自定义快捷键 问题解决: (1)vim模式 (2)map前缀 (3)删除映射Map (4)使用示例 (5)查看快捷键映射 命令行---:verbose ...

  6. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

    开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...

  7. 【HDOJ】【3037】Saving Beans

    排列组合 啊……这题是要求c(n-1,0)+c(n,1)+c(n+1,2)+......+c(n+m-1,m) 这个玩意……其实就等于c(n+m,m) 好吧然后就是模P……Lucas大法好= = 我S ...

  8. [转载]C# winform登陆框验证码的实现

    验证码技术已愈来愈成熟,从最初的数字.字母.字符.汉字已经到目前的语言,其应用也甚广,之前大多数只有在网站上可以看到,现在在一些客户端软件也经常可见(比如证券相关软件).之前做的一个基于 C# 客户端 ...

  9. 各种matrix

    http://www.gamedev.net/topic/602722-worldviewproj/

  10. int a[5]={1,2,3,4,5}; int *p=(int*)(&a+1); printf("%d",*(p-1)); 答案为什么是5?

    这个问题的关键是理解 &a a是一个数组名,也就是数组的首地址.对a进行取地址运算符,得到的是一个指向数组的指针!!!!这句话尤为重要!也就相当于int (*p) [5] = &a;p ...