iPhone多线程编程初体验
创始人
2024-07-31 04:30:27
0

找了很长时间IPhone下多线程的编程的内容, 用到的类是UIKit的中NSThread.。

在google过程中,发现很多文都惊喜地标题着类似< 多线程的OS4来了>, 这些想正向引导一下, 0S4的亮点在于多任务,一个任务为一个进程,也叫多进程, 而多线程在早期的IPHONEOS上都是有的.

IPHONE OS中任务的概念是一个应用, 在一个时间你只能做一件事情, 即不能同时玩游戏,同时上QQ. 而多任务的时候是可以这么做的.

流程大概如下:

1. 创建一个线程

  1. [NSThread detachNewThreadSelect:@selector(BeginThread)     
  2. toTarget:selft     
  3. withObject:nil];    

2.线程里做两件,一件是后台处理耗时间的活(dosomethinglongtime),另一件是更新UI(UpdateUI)

  1. view plaincopy to clipboardprint?  
  2. (void) BeginThread{     
  3. [self performSelectorInBackgroud:@selector(dosomethinglongtime)     
  4. withObject:nil];     
  5. [self perfomSelectorOnMainThread:@selector(UpdateUI)     
  6.  withObject:nil     
  7. watUntilDone:NO];     
  8. }    

3. 那UpdateUI的数据怎么来呢

  1. view plaincopy to clipboardprint?  
  2. -(void)dosomethinglongtime{     
  3. // 修改共享变量 varProgress, varText等等     
  4. }     
  5. {void)UpdateUI{     
  6. // 获得共享变量 varProgress, varText等等, 显示在界面上     

这样就完成了一个大概的流程,但是UpdateUI里不能用while(1),不然主线程会堵在UpdateUI的函数里,怎么办呢? Google了一个方法, UpdateUI的方法做了一下修改

这样的意思, 如果没线程没结束,过0.2秒再回到这个函数更新界面, 如此循环, 直到结束.

  1. view plaincopy to clipboardprint?  
  2. (void)UpdateUI{     
  3. // 获得共享变量 varProgress, varText等等, 显示在界面上     
  4. if(!finished)     
  5. [NSTimer scheduledTimerWithTimeInterval:0.2 target:self     
  6. selector:@selector(UpdateUI)  userInfo:nil repeats:NO];     
  7. }    

以上IPhone多线程编程的一种方法, 当然还有人提议用NSOperation和NSOperationQueue,但我试了一把,没把效果试出来, 等有结果再回来更新. 嘿嘿.

【编辑推荐】

解析iphone多线程

多线程编程您不知道的5件事

Java多线程程序设计详细解析

Android 多任务多线程断点下载

iPhone应用开发必知必会的三大基础

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...