GCD

GCD是蘋(píng)果開(kāi)發(fā)的一個(gè)多核編程的解決方法罪帖,GCD和其他的多線程技術(shù)方案相比喂走,使用起來(lái)更加簡(jiǎn)單和方便。

使用GCD

1.block的定義

//申明變量?

void (^ loggerBlock)(void);

//定義

loggerBlock = ^{

NSLog(@"Hello");

}

//調(diào)用

loggerBlock();

2.系統(tǒng)提供的dispatch方法

//后臺(tái)執(zhí)行

dispatch_async(dispatch_get_global_queue(0,0),^{

});

//主線程執(zhí)行

dispatch_async(dispatch_get_main_queue(),^{

});

//一次性執(zhí)行

static dispatch_once_t ?oneToken;

dispatch_once(&onceToken,^{

});

//延遲2秒執(zhí)行

double delayInSeconds = 2.0;

dispatch_time_ t popTime = dispatch_time(DISPATCH_TIME_NOW,delayInSeconds*NSEC_PER_SEC);

dispatch_after(popTime,dispatch_get_main_queue(),^(void){

});


GCD高級(jí)用法烧董,例如讓后臺(tái)兩個(gè)線程并行執(zhí)行州疾,然后等兩個(gè)線程都結(jié)束后,再匯總結(jié)果揪垄。

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group,dispatch_get_global_queue(0,0),^{//并行執(zhí)行的程序一});

dispatch_group_async(group,dispatch_get_global_queue(0,0),^{//并行執(zhí)行的程序二});

dispatch_group_notify(group,dispatch_get_global_queue(0,0),^{//匯總結(jié)果});

3.修改block之外的變量

默認(rèn)情況下穷吮,在程序塊中訪問(wèn)的外部變量是復(fù)制過(guò)去的,即寫(xiě)操作不對(duì)原變量生效饥努。但可以加上 ? __block來(lái)讓其生效捡鱼。

__block int a = 0;

void (^foo)(void) = ^{ a=1; }

foo(); //此時(shí) a的值被修改為1

4.后臺(tái)運(yùn)行

使用block的另一個(gè)用處是讓程序在后臺(tái)較長(zhǎng)久的運(yùn)行。在以前酷愧,當(dāng)應(yīng)用被按home鍵退出后驾诈,應(yīng)用最多5秒鐘的時(shí)間做一些保存或清理資源的工作缠诅。但是應(yīng)用可以調(diào)用UIApplication的beginBackgroundTaskWithExpirationHandler方法,讓?xiě)?yīng)用有10分鐘的時(shí)間在后臺(tái)運(yùn)行乍迄。這個(gè)時(shí)間可以用來(lái)做清理本地緩存管引、發(fā)送統(tǒng)計(jì)數(shù)據(jù)等工作。

@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;

- (void)applicationDidEnterBackground:(UIApplication *)application {

[self beginBackgroundUpdateTask];

//加上需要長(zhǎng)久執(zhí)行的代碼

[self endBackgroundUpdateTask];

}

- (void)beginBackgroundUpdateTask {

self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

[self endBackgroundUpdateTask];

}];

}

- (void)endBackgroundUpdateTask {

[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];

self.backgroundUpdateTask = UIBackgroundTaskInvalid;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闯两,一起剝皮案震驚了整個(gè)濱河市褥伴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漾狼,老刑警劉巖重慢,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異逊躁,居然都是意外死亡似踱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)稽煤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)核芽,“玉大人,你說(shuō)我怎么就攤上這事酵熙∧螅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵绿店,是天一觀的道長(zhǎng)吉懊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)假勿,這世上最難降的妖魔是什么借嗽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮转培,結(jié)果婚禮上恶导,老公的妹妹穿的比我還像新娘。我一直安慰自己浸须,他們只是感情好惨寿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著删窒,像睡著了一般裂垦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肌索,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天蕉拢,我揣著相機(jī)與錄音,去河邊找鬼。 笑死晕换,一個(gè)胖子當(dāng)著我的面吹牛午乓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闸准,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼益愈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了夷家?” 一聲冷哼從身側(cè)響起蒸其,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘾英,沒(méi)想到半個(gè)月后枣接,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颂暇,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缺谴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耳鸯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湿蛔。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖县爬,靈堂內(nèi)的尸體忽然破棺而出阳啥,到底是詐尸還是另有隱情,我是刑警寧澤财喳,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布察迟,位于F島的核電站,受9級(jí)特大地震影響耳高,放射性物質(zhì)發(fā)生泄漏扎瓶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一泌枪、第九天 我趴在偏房一處隱蔽的房頂上張望概荷。 院中可真熱鬧,春花似錦碌燕、人聲如沸误证。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)愈捅。三九已至,卻和暖如春慈鸠,著一層夾襖步出監(jiān)牢的瞬間改鲫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留像棘,地道東北人稽亏。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缕题,于是被迫代替她去往敵國(guó)和親截歉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 我們知道在iOS開(kāi)發(fā)中烟零,一共有四種多線程技術(shù):pthread瘪松,NSThread,GCD锨阿,NSOperation: ...
    請(qǐng)叫我周小帥閱讀 1,484評(píng)論 0 1
  • 1. GCD簡(jiǎn)介 什么是GCD呢宵睦?我們先來(lái)看看百度百科的解釋簡(jiǎn)單了解下概念 引自百度百科:Grand Centra...
    千尋_544f閱讀 359評(píng)論 0 0
  • 白鴿子隔了三天才又去“長(zhǎng)夢(mèng)”。 那三天里墅诡,她把從小到大所有的不滿統(tǒng)統(tǒng)寫(xiě)到了白紙上壳嚎。 ——滿滿的十大頁(yè)白紙! 多的令...
    南國(guó)小鴿子閱讀 298評(píng)論 0 0
  • 誰(shuí)能料到末早,珠海人會(huì)意想天開(kāi)般地沿海填出了一條幾十公里的大道烟馅,種上南國(guó)的樹(shù)木與花草,又樹(shù)起著一個(gè)又一個(gè)充滿著現(xiàn)代情致...
    孔孟之鄉(xiāng)閱讀 698評(píng)論 0 1
  • 我沒(méi)有文采然磷,沒(méi)有天賦郑趁。能寫(xiě)出來(lái)一些東西,只是自己所思所想姿搜。 沒(méi)有思路的時(shí)候寡润,大概都是在經(jīng)歷無(wú)法訴說(shuō)的事情吧。 今年...
    水若善上金水閱讀 125評(píng)論 0 0