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