五個(gè)案例讓你明白GCD死鎖:
http://ios.jobbole.com/82622/iOS開發(fā)中多線程間關(guān)于鎖的使用
http://www.cnblogs.com/huayuan320/p/6217738.htmlObjective c中的鎖 NSLock基茵,NSConditionLock迹恐,NSRecursiveLock等定義
http://blog.csdn.net/xiaofei125145/article/details/52003624NSLock死鎖:
unlock 操作必須與lock 操作使用相同的線程蛤克,否則會(huì)出現(xiàn)未知錯(cuò)誤。
同一線程在 lock之后 未unlock 之前 再次 lock 會(huì)造成 永久性死鎖。MJExtension底層實(shí)現(xiàn)原理簡單剖析
http://blog.csdn.net/petyou123/article/details/51150401SDWebImage實(shí)現(xiàn)原理
http://www.cnblogs.com/cleven/p/5491622.htmlRuntime Method Swizzling開發(fā)實(shí)例匯總
SEL蛙粘、Method顶吮、IMP的含義及區(qū)別:
在運(yùn)行時(shí),類(Class)維護(hù)了一個(gè)消息分發(fā)列表來解決消息的正確發(fā)送甥厦。每一個(gè)消息列表的入口是一個(gè)方法(Method)纺铭,這個(gè)方法映射了一對(duì)鍵值對(duì),其中鍵是這個(gè)方法的名字(SEL)刀疙,值是指向這個(gè)方法實(shí)現(xiàn)的函數(shù)指針 implementation(IMP)
http://www.reibang.com/p/f6dad8e1b848響應(yīng)鏈
/**
事件的產(chǎn)生和傳遞:
1舶赔、發(fā)生觸摸事件后,系統(tǒng)會(huì)將該事件加入到一個(gè)由UIApplication管理的事件隊(duì)列中
2谦秧、UIApplication 會(huì)從事件隊(duì)列中取出最前面的事件竟纳,并將事件分發(fā)下去以便處理,通常先發(fā)送事件給應(yīng)用程序的主窗口(keywindow)
3疚鲤、主窗口會(huì)在 視圖層次結(jié)構(gòu)中(比如window上有個(gè)view view上又有一個(gè)view) 找到最合適的視圖(view)來處理觸摸事件锥累,這也是整個(gè)事件處理過程的第一步
4、找到合適的視圖控件后集歇,就會(huì)調(diào)用視圖控件的touches(touchesBegan等方法)方法來作具體的事件處理
重點(diǎn):
注意:控制器也可以響應(yīng)事件
觸摸事件的傳遞是從父控件傳遞到子控件 (如果兩個(gè)view1和view2同級(jí)桶略,都在當(dāng)前的viewcontroller上,那先找后添加的子控件view2)
傳遞:UIApplication - UIWindow - UIViewcontroller - UIViewcontroller上面的view - view再傳給view上面的imageView诲宇,imageView響應(yīng)事件删性,并調(diào)用touchBegin方法
響應(yīng)(響應(yīng)鏈):imageView如果沒有響應(yīng)事件,那么順著響應(yīng)鏈找到上一級(jí)view焕窝,如果view沒有響應(yīng)事件蹬挺,那么順著響應(yīng)鏈找到上一級(jí)(這里即viewController),viewController如果沒有響應(yīng)事件它掂,那么傳遞給主窗口window巴帮,如果還沒有響應(yīng),就丟棄該事件
總結(jié):傳遞:有點(diǎn)像父控件傳遞到子控件 一級(jí)一級(jí)往下傳遞
響應(yīng):子控件沒響應(yīng)虐秋,就丟給父控件響應(yīng) 一級(jí)一級(jí)往上響應(yīng)
UIView不接收觸摸事件的三種情況
默認(rèn)UIImageView的userInteractionEnabled = NO 不允許接收觸摸事件
情況1榕茧、 userInteractionEnabled = NO
情況2、 hidden = YES
情況3客给、 alpha = 0
*/
-
KVC
1516249236311.jpg