同步鎖,又叫互斥鎖,@synchronized(self)
自旋鎖:atomic:原子屬性,多線程環(huán)境下,只有一個線程可以對它賦值,讀取沒有線程限制
nonatomic:非原子屬性,讀取沒有限制
線程安全:在多個線程進(jìn)行讀寫操作時,仍然能夠保證數(shù)據(jù)的正確
幾乎所有的UIKit類都是非線程安全的
所有的mutable開頭的類都不是線程安全的
weak:弱引用,如果對象銷毀,會指向0x0地址
assign:基本數(shù)據(jù)類型,如果使用assign指針指向?qū)ο?,對象釋放時,會指向原來對象的地址,發(fā)生野指針錯誤。
消息循環(huán):循環(huán)開始,創(chuàng)建對象,創(chuàng)建自動釋放池,執(zhí)行事件,傾倒自動釋放池,一次循環(huán)結(jié)束。
線程上運(yùn)行著消息循環(huán),根據(jù)消息的不同會有不同的處理方法。
消息循環(huán)包含輸入源和定時源。輸入源包含鍵盤、鼠標(biāo)、NSPort等等。
消息循環(huán)的默認(rèn)模式是KCFRunLoopDefaultMode,當(dāng)拖動界面的時候,模式變成UITrackingRunLoopMode。添加定時器的時候,會有一個模式。
只有當(dāng)定時器的模式和消息循環(huán)的模式匹配的時候,定時器才能運(yùn)行在消息循環(huán)中。
定時器的NSRunLoopCommonModes是一個模式集合。
同步異步:是否開啟新線程
并發(fā)串行:隊(duì)列中任務(wù)是同時執(zhí)行還是串行執(zhí)行
主隊(duì)列同步:死鎖
主隊(duì)列異步:不開啟新線程,串行執(zhí)行任務(wù)
串行隊(duì)列同步:不開啟新線程,串行執(zhí)行任務(wù)
串行隊(duì)列異步:開啟一個新線程,串行執(zhí)行任務(wù)
并發(fā)隊(duì)列同步:不開啟新線程,串行執(zhí)行任務(wù)
并發(fā)隊(duì)列異步:開啟多個新線程,并發(fā)執(zhí)行任務(wù)