自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone多線程編程初體驗(yàn)

移動開發(fā) iOS
多線程編程是防止主線程堵塞,增加運(yùn)行效率等等的最佳方法。而原始的多線程方法存在很多的毛病,包括線程鎖死等。

找了很長時(shí)間IPhone下多線程的編程的內(nèi)容, 用到的類是UIKit的中NSThread.。

在google過程中,發(fā)現(xiàn)很多文都驚喜地標(biāo)題著類似< 多線程的OS4來了>, 這些想正向引導(dǎo)一下, 0S4的亮點(diǎn)在于多任務(wù),一個(gè)任務(wù)為一個(gè)進(jìn)程,也叫多進(jìn)程, 而多線程在早期的IPHONEOS上都是有的.

IPHONE OS中任務(wù)的概念是一個(gè)應(yīng)用, 在一個(gè)時(shí)間你只能做一件事情, 即不能同時(shí)玩游戲,同時(shí)上QQ. 而多任務(wù)的時(shí)候是可以這么做的.

流程大概如下:

1. 創(chuàng)建一個(gè)線程

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

2.線程里做兩件,一件是后臺處理耗時(shí)間的活(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的數(shù)據(jù)怎么來呢

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

這樣就完成了一個(gè)大概的流程,但是UpdateUI里不能用while(1),不然主線程會堵在UpdateUI的函數(shù)里,怎么辦呢? Google了一個(gè)方法, UpdateUI的方法做了一下修改

這樣的意思, 如果沒線程沒結(jié)束,過0.2秒再回到這個(gè)函數(shù)更新界面, 如此循環(huán), 直到結(jié)束.

  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多線程編程的一種方法, 當(dāng)然還有人提議用NSOperation和NSOperationQueue,但我試了一把,沒把效果試出來, 等有結(jié)果再回來更新. 嘿嘿.

【編輯推薦】

解析iphone多線程

多線程編程您不知道的5件事

Java多線程程序設(shè)計(jì)詳細(xì)解析

Android 多任務(wù)多線程斷點(diǎn)下載

iPhone應(yīng)用開發(fā)必知必會的三大基礎(chǔ)

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2021-08-12 14:33:20

Python多線程編程

2011-08-02 10:26:59

iOS 多線程 線程

2011-07-28 14:19:12

iPhone 網(wǎng)絡(luò)編程 聊天程序

2011-06-24 11:03:31

Qt 多線程 線程

2011-08-09 14:24:18

iPhone多線程線程

2011-06-20 13:23:03

Qt Quick QML

2011-07-21 11:12:58

iPhone 線程 多線程

2011-06-02 17:27:49

iphone 多線程

2011-07-08 16:43:46

iPhone Cocoa 多線程

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2023-10-06 23:06:01

多線程Python

2023-06-13 13:39:00

多線程異步編程

2009-03-12 10:52:43

Java線程多線程

2009-03-09 15:12:39

XenServer安裝

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統(tǒng)

2023-04-02 17:53:10

多線程編程自測

2023-06-05 07:56:10

線程分配處理器

2023-06-06 08:17:52

多線程編程Thread類

2011-08-12 10:09:23

iPhone開發(fā)多線程

2023-06-07 13:49:00

多線程編程C#
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號