1、OC的消息轉(zhuǎn)發(fā)機(jī)制
1几蜻、消息查找:從方法緩存中找方法喇潘,找不到去方法列表中找,找到了將該方法加入方法緩存入蛆,還是找不到响蓉,去父類里重復(fù)前面的步驟,如果找到底都找不到那么進(jìn)入2
2哨毁、動(dòng)態(tài)解析:看該類是否實(shí)現(xiàn)了resolveInstanceMethod:和resolveClassMethod:枫甲,如果實(shí)現(xiàn)了就解析動(dòng)態(tài)添加的方法,并調(diào)用該方法扼褪,如果沒(méi)有實(shí)現(xiàn)進(jìn)入3
3想幻、消息轉(zhuǎn)發(fā):
調(diào)用forwardingTargetForSelector:看返回的對(duì)象是否為nil,如果不為nil话浇,調(diào)用objc_msgSend傳入對(duì)象和SEL脏毯。
如果上面為nil,那么就調(diào)用methodSignatureForSelector:返回方法簽名幔崖,如果方法簽名不為nil食店,調(diào)用forwardInvocation:來(lái)執(zhí)行該方法
4、一直沒(méi)有處理成功赏寇,最后會(huì)報(bào)錯(cuò)
2吉嫩、KVC/KVO
3、內(nèi)存管理
4嗅定、Block :http://www.reibang.com/p/4e79e9a0dd82
5自娩、多線程
//多線程/鎖/線程安全/線程同步/NSOperation
? ? //GCD:
http://www.reibang.com/p/2d57c72016c6
? ? //鎖: http://www.cocoachina.com/articles/34796?filter=rec
? ? //鎖:http://www.reibang.com/p/ddbe44064ca4
? ? //鎖:http://www.reibang.com/p/65dd76287673
? ? //http://www.reibang.com/p/6d6832e42936
? ? //讀寫鎖
? ? /*
?? ? 1、GCD 高級(jí)用法
? ? ? ? ? ? ? ? 串行隊(duì)列? ? ? ? ? ? 并行隊(duì)列? ? ? ? ? 主隊(duì)列
?? ? 同步? ? 無(wú)新線程渠退、串行執(zhí)行? 無(wú)新線程忙迁、串行執(zhí)行? ? ? 死鎖
?? ? 異步? ? 開(kāi)1條線程串行執(zhí)行? ? ? ? ? ? ? ? ? ? 沒(méi)有開(kāi)啟新線程,串行執(zhí)行
?? ? */