1.NSThread
NSThread是IOS提供的可以開(kāi)辟一個(gè)線程的類(lèi),是完全面向?qū)ο蟮模梢灾苯硬倏鼐€程對(duì)象和方法,非常直觀和方便。
[NSThread isMainThread]可以返回一個(gè)Bool值。用于檢測(cè)當(dāng)前線程是主線程還是分線程。1是主線程;0是分線程。
[NSThread detachNewThreadSelector: toTarget: withObjct: ]這個(gè)方法是開(kāi)辟一個(gè)分線程,第三個(gè)參數(shù)是你想要往這個(gè)方法里面?zhèn)鞯闹怠?/p>
NSThread這種方法創(chuàng)建的線程需要管理線程的生命周期、同步、加鎖問(wèn)題,會(huì)導(dǎo)致一定的性能開(kāi)銷(xiāo)。不過(guò)可以用[NSThread currentThread]跟蹤任務(wù)所在線程,在調(diào)試的時(shí)候十分方便。
2.NSOperation和NSOperationQueue
它是蘋(píng)果公司對(duì)GCD的封裝,是面向?qū)ο蟮木€程技術(shù)。只需將任務(wù)放到對(duì)應(yīng)的隊(duì)列中,不必關(guān)心線程管理、同步等問(wèn)題。
NSOperationQueue是個(gè)操作隊(duì)列,可以開(kāi)辟一個(gè)分線程,也稱(chēng)線程池。通過(guò)alloc創(chuàng)建出來(lái)的操作隊(duì)列相當(dāng)于開(kāi)辟了一個(gè)分線程;[NSOperationQueue mainQueue]獲取主隊(duì)列,這時(shí)把操作對(duì)象放進(jìn)主隊(duì)列里,他們都會(huì)在主線程里執(zhí)行任務(wù)。[queue addOperation: ]
NSOperation是操作隊(duì)列要放置的操作對(duì)象。他是一個(gè)虛類(lèi),不能直接使用,只能用它的子類(lèi):NSInvocationOperation、NSBlockOperation。
需要注意的是更新刷新UI一定要在主線程里執(zhí)行。
3.GCD(Grand Central Dispach)
GCD用來(lái)解決多核編程問(wèn)題,IOS4之后提出的,是基于C語(yǔ)言的底層API。
GCD是蘋(píng)果為多核編程的并行運(yùn)算提出的解決方案,所以會(huì)自動(dòng)合理的利用更多的CPU內(nèi)核。
GCD會(huì)自動(dòng)管理線程的生命周期,創(chuàng)建線程、調(diào)度任務(wù)、銷(xiāo)毀線程。
GCD使用block來(lái)定義任務(wù),使用起來(lái)非常靈活。
通過(guò)GCD可以創(chuàng)建串行、并發(fā)、主隊(duì)列,可以同步和異步執(zhí)行任務(wù)。
****************自己IOS學(xué)習(xí)的知識(shí)點(diǎn)總結(jié),有不足之處,還請(qǐng)多多包涵***********