http://www.cnblogs.com/ygm900/archive/2013/06/23/3151691.html

第一步:开启子线程

    //开启子线程到网络上获取数据
myFirstThread = [[NSThread alloc]initWithTarget:self selector:@selector(thread1GetData) object:nil];
[myFirstThread setName:@"第一个子线程,用于获取网络数据"];
[myFirstThread start];

第二步:子线程的方法

//获取数据
-(void)thread1GetData
{
while (!myFirstThread.isCancelled) { // 关键
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
//通过接口获取数据 (字典格式)
self.dic_base64TabelViewDataSource = [self getDataFromInterFace]; //将数据字典转换成可以直接显示的cellview nsma_CellViews 相当于终极数据源
self.nsma_CellViews = [self orderDataForTableViewWithDictinary: self.dic_base64TabelViewDataSource]; //用数据源 nsma_CellViews 更新用户界面
[self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:YES]; // [NSThread sleepForTimeInterval:0.09]; //不用亦可
[pool release];
[NSThread exit]; //关键 }
}

第三步:结束子线程

-(IBAction)btnBack:(id)sender
{
//释放内存 仅仅remove 并不会触发内存的释放 if (!(mySecondThread==nil) && !myFirstThread.isCancelled) {
[myFirstThread cancel]; //等子线程结束再跳出循环
int i=0;
while (!myFirstThread.isFinished){
NSLog(@"mySecondThread还没有结束 %i",i++);
}
} //其它操作

iOS中使用子线程的完整方法的更多相关文章

  1. vc中主线程等待子线程退出的方法

    VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...

  2. iOS 报错:(子线程中更新UI)This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.

    今天在写程序的时候,使用Xcode 运行工程时报出下面的错误错信息,我还以为是什么呢,好久没遇到过这样的错误了. **ProjectName[1512:778965] This application ...

  3. 2017-11-29 由runnable说起Android中的子线程和主线程

    1.首先纠正一个观点,就是runnable运行在子线程中是错误的观念.runnable只是创建了一个执行任务的对象,但是它本身并不会创建一个新的子线程,Runable只是给你接口让你实现工作线程的工作 ...

  4. iOS中的GCD线程

    一.什么是GCD      全称是Grand Central Dispatch ,纯C语言编写,提供非常多强大的函数,是目前苹果官网推荐的多线程开发方法,NSOperation 便是基于GCD的封装 ...

  5. iOS中的NSOperation线程

    1.除NSThread之外的第二种多线程的编程方法   2.采用NSOperation(线程操作,通常用他的子类)和NSOperationQueue(线程队列)搭配来做多线程开发,采用NSOperat ...

  6. Java中怎样创建线程安全的方法

    面试问题: 下面的方法是否线程安全?怎样让它成为线程安全的方法? class MyCounter { private static int counter = 0; public static int ...

  7. Android子线程创建Handler方法

    如果我们想在子线程上创建Handler,通过直接new的出来是会报异常的比如: new Thread(new Runnable() { public void run() { Handler hand ...

  8. iOS中进程与线程(多线程、主次线程)

    一.什么是线程?什么是多线程?              线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 例子: 打开一个音乐软件,用户开辟一个线程A ...

  9. IntentService用于服务中开启子线程的自动关闭

    package com.pingyijinren.test; import android.app.IntentService; import android.content.Intent; impo ...

随机推荐

  1. CodeForces 593D【树链剖分】

    题意: 给你n个点和n-1条边组成的一棵树,按顺序给出数的每一条边. 询问m次,每次给出一个x求x除以从点a到点b所有边的权值和的乘积,还有修改,给出边的编号,修改某条边的权值. 思路: 树链剖分,用 ...

  2. jQuery学习笔记----入门

    基础语法是:$(selector).action() 美元符号定义 jQuery 选择符(selector)“查询”和“查找” HTML 元素 jQuery 的 action() 执行对元素的操作

  3. ORA-04031 With Leak in "OBJ STAT MEMO" Allocations Seen in V$SGASTAT on 10.2.0.5 (文档 ID 1350050.1)

    APPLIES TO: Oracle Server - Enterprise Edition - Version: 10.2.0.5<max_ver> and later   [Relea ...

  4. 11g RMAN Restore archivelog用法

    I.备份所有归档日志文件 RMAN> BACKUP FORMAT '/u01/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVE ...

  5. ASP.NET MVC开发微信(一)

    public string index() { return Content(""); }

  6. 树状数组POJ2352星星

    http://poj.org/problem?id=2352 这道题的题意对于住学者应该比较难理解,但是如果弄明白他的意思的话,你就会发现这就是赤裸裸的树状数组,哎,欺负我不懂是吧,当时读题读啦好久, ...

  7. OSGI.NET 插件启动方法

    在使用OSGI.NET框架来开发插件过程中,有时为了测试一个插件,或运行一个插件,需要启动主个插件,如果没有主窗口程序,那么该 如何启动一个插件,而不是再开发一个主窗口程序(那样是不是太麻烦,仅仅是为 ...

  8. SVN中取消冲突conflict

    在SVN update代码出现冲突的时候,可以先右键点击SVN commit,在打开的窗口中单击红框内区域: 然后,再一次点击edit->mark as resolved,然后删除代码中> ...

  9. 洛谷P1631 序列合并

    P1631 序列合并 236通过 657提交 题目提供者xmyzwls 标签堆 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 为什么不行? 题目描述 有两个长度都是N的序列A和B,在A和B中 ...

  10. cordova 开发属于自己的插件---android

    还是需要开发出自己的插件的... 我的cordova  version is 4.0.0 1.需要新建一个文件夹为 myplugin 1.1在myplugin文件夹下 新建 plugin.xml文件 ...