国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

iOS開發(fā):多線程編程之NST_hread的使用詳解

2019-11-02 14:17:44
字體:
供稿:網(wǎng)友

   1、簡(jiǎn)介:

  1.1 iOS有三種多線程編程的技術(shù),分別是:

  1.、NSThread

  2、Cocoa NSOperation (iOS多線程編程之NSOperation和NSOperationQueue的使用)

  3、GCD 全稱:Grand Central Dispatch( iOS多線程編程之Grand Central Dispatch(GCD)介紹和使用)

  這三種編程方式從上到下,抽象度層次是從低到高的,抽象度越高的使用越簡(jiǎn)單,也是Apple最推薦使用的。

  這篇我們主要介紹和使用NSThread,后面會(huì)繼續(xù)2、3 的講解和使用。

  1.2 三種方式的優(yōu)缺點(diǎn)介紹:

  NSThread:

  優(yōu)點(diǎn):NSThread 比其他兩個(gè)輕量級(jí)

  缺點(diǎn):需要自己管理線程的生命周期,線程同步。線程同步對(duì)數(shù)據(jù)的加鎖會(huì)有一定的系統(tǒng)開銷

  NSThread實(shí)現(xiàn)的技術(shù)有下面三種:

iOS開發(fā):多線程編程之NSThread的使用詳解 電腦高手

  一般使用cocoa thread 技術(shù)。

  Cocoa operation

  優(yōu)點(diǎn):不需要關(guān)心線程管理,數(shù)據(jù)同步的事情,可以把精力放在自己需要執(zhí)行的操作上。

  Cocoa operation 相 關(guān)的類是 NSOperation ,NSOperationQueue。NSOperation是個(gè)抽象類,使用它必須用它的子類,可以實(shí)現(xiàn)它或者使用 它定義好的兩個(gè)子類:NSInvocationOperation 和 NSBlockOperation。創(chuàng)建NSOperation子類的對(duì)象,把對(duì) 象添加到NSOperationQueue隊(duì)列里執(zhí)行。

  GCD

  Grand Central Dispatch (GCD) 是Apple開發(fā)的一個(gè)多核編程的解決方法。在iOS4.0開始之后才能使用。GCD是一個(gè)替代諸如 NSThread, NSOperationQueue, NSInvocationOperation等技術(shù)的很高效和強(qiáng)大的技術(shù)。現(xiàn)在的iOS系統(tǒng)都 升級(jí)到6了,所以不用擔(dān)心該技術(shù)不能使用。

  介紹完這三種多線程編程方式,我們這篇先介紹NSThread的使用。

  2、NSThread的使用

  2.1 NSThread 有兩種直接創(chuàng)建方式:

  - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument

  + (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument

  第一個(gè)是實(shí)例方法,第二個(gè)是類方法

  [NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];

  NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];

  [myThread start];

  2.2參數(shù)的意義:

  selector :線程執(zhí)行的方法,這個(gè)selector只能有一個(gè)參數(shù),而且不能有返回值。

  target :selector消息發(fā)送的對(duì)象

  argument:傳輸給target的唯一參數(shù),也可以是nil

  第一種方式會(huì)直接創(chuàng)建線程并且開始運(yùn)行線程,第二種方式是先創(chuàng)建線程對(duì)象,然后再運(yùn)行線程操作,在運(yùn)行線程操作前可以設(shè)置線程的優(yōu)先級(jí)等線程信息

  2.3 PS:不顯式創(chuàng)建線程的方法:

  用NSObject的類方法 performSelectorInBackground:withObject: 創(chuàng)建一個(gè)線程:

  [Obj performSelectorInBackground:@selector(doSomething) withObject:nil];

  2.4 下載圖片的例子:

  2.4.1 新建singeView app

  新建項(xiàng)目,并在xib文件上放置一個(gè)imageView控件。按住control鍵拖到viewController.h文件中創(chuàng)建imageView IBOutlet ViewController.m中實(shí)現(xiàn):

  // ViewController.m

  // NSThreadDemo

  //

  // Created by rongfzh on 12-9-23.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 元阳县| 碌曲县| 安塞县| 涪陵区| 临夏市| 会宁县| 绥宁县| 甘孜县| 财经| 新田县| 阿图什市| 利川市| 镇安县| 西藏| 四平市| 公安县| 合山市| 深水埗区| 嵊州市| 张家口市| 嘉兴市| 光泽县| 西吉县| 江都市| 漯河市| 义马市| 珲春市| 宁晋县| 平原县| 宁河县| 宜都市| 岗巴县| 台中市| 湾仔区| 塔河县| 武夷山市| 石河子市| 南康市| 旬邑县| 石棉县| 邯郸县|