IOS NSThread
任何一个 iOS 应用程序都是由一个或者多个线程构成的。无论你是否使用了多线程编程技术,至少有 1 个 线程被创建。多线程就是为了提高引用程序的工作效率!避免阻塞主线程!当我们没有用任何多线程技术的话,默认情况下,是在程序的主线程中执行相关操作!(因此不要在主线程中实现耗时方法)。
比较简单,直接上代码。
//
// ViewController.m
// CXNSThread
//
// Created by ma c on 16/3/15.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
//
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; /* 常用方法
获取当前线程 NSThread * thread = [NSThread currentThread];
获取主线程 NSThread * main = [NSThread mainThread];
暂停多少秒 [NSThread sleepForTimeInterval:2];
暂停到什么时间段 [NSThread sleepUntilDate:2];
强制停止线程 [NSThread exit];(一旦线程停止 就不能再次开启任务)。 */
/* 线程间的通信
self performSelector:<#(SEL)#> withObject:<#(id)#> withObject:<#(id)#>
self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>
self performSelector:<#(nonnull SEL)#> onThread:<#(nonnull NSThread *)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#> */
/* 优点:NSThread比其他两种对线程方案较轻量级,更直观的控制线程对象 缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据加锁会有一定开销。
##(加锁) @synchronized(sel) {
<#statements#>
} ## */ //初始化->动态方法
NSThread * threadOne = [[NSThread alloc]initWithTarget:self selector:@selector(threadOneAction) object:nil]; //设置线程名称
threadOne.name = @"threadOne"; //设置优先级(low ~ height)(0~1)
threadOne.threadPriority = ; //开启线程
[threadOne start]; //静态方法
[NSThread detachNewThreadSelector:@selector(threadTwoAction) toTarget:self withObject:nil]; //隐式创建
[self performSelectorInBackground:@selector(threadThreeAction) withObject:nil]; NSLog(@"Main->%@",[NSThread currentThread]); } -(void)threadOneAction{ //log当前线程
NSLog(@"One->%@",[NSThread currentThread]); } -(void)threadTwoAction{ NSLog(@"Two->%@",[NSThread currentThread]); } -(void)threadThreeAction{ NSLog(@"Three->%@",[NSThread currentThread]); } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; } @end
结果:

IOS NSThread的更多相关文章
- [ios]NSThread传值 NSValue传值
NSThread:http://www.cocoachina.com/bbs/read.php?tid=51873 NSValue:http://blog.sina.com.cn/s/blog_bf9 ...
- IOS NSThread 线程间通信
@interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @im ...
- IOS NSThread(线程同步)
@interface HMViewController () /** 剩余票数 */ @property (nonatomic, assign) int leftTicketsCount; @prop ...
- iOS开发之多线程技术(NSThread、OperationQueue、GCD)
在前面的博客中如果用到了异步请求的话,也是用到的第三方的东西,没有正儿八经的用过iOS中多线程的东西.其实多线程的东西还是蛮重要的,如果对于之前学过操作系统的小伙伴来说,理解多线程的东西还是比较容易的 ...
- iOS GCD NSOperation NSThread等多线程各种举例详解(拷贝)
2年多的iOS之路匆匆而过,期间也拜读来不少大神的博客,近来突然为自己一直做伸手党感到羞耻,是时候回馈社会.回想当年自己还是小白的时候,照着一些iOS多线程教程学,也只是照抄,只知其然.不知其所以然. ...
- IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
注:本人是翻译过来,并且加上本人的一点见解. 要点: 1.前言 2.pthread 3.NSThread 4.Grand Central Dispatch(GCD) 5.Operation Queue ...
- iOS多线程之NSThread详解
在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程.由于iOS中除了主线程,其他子线程是独立于Cocoa Touch的,所以只有主线程可以更新UI界面.iOS多线程的使 ...
- iOS开发——多线程篇——NSThread
一.基本使用1.创建和启动线程一个NSThread对象就代表一条线程 创建.启动线程NSThread *thread = [[NSThread alloc] initWithTarget:self s ...
- iOS多线程编程之NSThread的使用
目录(?)[-] 简介 iOS有三种多线程编程的技术分别是 三种方式的有缺点介绍 NSThread的使用 NSThread 有两种直接创建方式 参数的意义 PS不显式创建线程的方法 下载图片的例子 ...
随机推荐
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)
这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...
- 用于软件包管理的21个Linux YUM命令 转载
http://flycars001.iteye.com/blog/1949085 YUM到底是啥东东? YUM(Yellowdog Updater Modified)是一款开源命令行及图形化软件包管理 ...
- js-string字符串对象
js-string字符串对象 一.String 对象描述 字符串是 JavaScript 的一种基本的数据类型. String 对象的 length 属性声明了该字符串中的字符数. String 类定 ...
- Logger.getLogger和LogFactory.getLog的区别
Logger来自log4j自己的包.如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依靠log4j: LogFactory来自common-logging包.如果用 ...
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)
实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624 ...
- 译:什么是ViewData的, ViewBag和TempData? - MVC为当前和后续请求之间传递数据的三种方法
译文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem AS ...
- sql date()函数,时间格式
(1).GETDATE() 函数从 SQL Server 返回当前的日期和时间. 语法 GETDATE() 实例 下面是 SELECT 语句: SELECT GETDATE() AS CurrentD ...
- Worm.Win32.DownLoader.ns病毒主进程新式输入法注入分析(IME Inject)
1.病毒会在system32目录生成一个以tmp结尾的随机数命名的文件. 2.然后挂钩HOOK本进程空间的imm32.dll导出的ImmLoadLayout函数和ntdll.dll导出的ZwQuery ...
- Oracle客户端+PLSQLDeveloper实现远程登录Oracle数据库
Oracle数据库功能强大.性能卓越,在造就这些优点的同时,也导致Oracle占内存比较多.针对这个问题,我们如何做到取其精华去其糟粕呢? 解决方案:我们可以在局域网内的服务器上安装庞大的Oracle ...