NSDictionary
1、底層是哈希表+拉鏈法
2、對(duì)_CFDictionary的封裝
3、字典的hash實(shí)現(xiàn)非常任性的返回了鍵值對(duì)個(gè)數(shù)※※※※
NSMutableArray
1、連續(xù)的存儲(chǔ)空間
2、取的某個(gè)下標(biāo)下存儲(chǔ)數(shù)據(jù)的時(shí)間幾乎相同
3、存儲(chǔ)空間不夠的時(shí)候會(huì)整體復(fù)制到一個(gè)新的存儲(chǔ)空間(數(shù)量巨大則會(huì)消耗成倍時(shí)間)
4、arrayWithCapacity會(huì)直接取的一塊大于連續(xù)空間的內(nèi)存(貌似不會(huì)相等,試了好多次,沒有相等過)
TaggedPointer
1、NSDate/NSNumber
2、當(dāng)少于九個(gè)純ASCII時(shí)候,NSString也是該類型。一旦有其余類型,則立即變?yōu)開NSCFString
3、無isa指針
鎖
1、synchronized 關(guān)鍵字加鎖 互斥鎖,性能較差不推薦使用
2、NSLock 互斥鎖 不能多次調(diào)用 lock方法,會(huì)造成死鎖
3、 NSRecursiveLock 遞歸鎖
4、dispatch_semaphore 信號(hào)量實(shí)現(xiàn)加鎖
內(nèi)存管理
1、ARC
2、修飾符
3、棧,堆,全局/靜態(tài),常量,代碼各區(qū)
Block
1、NSStackBlock存儲(chǔ)于棧區(qū),NSGlobalBlock存儲(chǔ)于程序數(shù)據(jù)區(qū),NSMallocBlock存儲(chǔ)于堆區(qū)
2、block中引用外部變量,則生成在堆。方法中帶block是棧區(qū)。block自己玩就是數(shù)據(jù)區(qū)。
layoutSubviews
1、有子視圖才會(huì)調(diào)用
2、在1的前提下。addsubview 會(huì)調(diào)用,自己view的frame發(fā)生變化時(shí)候,自己的子view發(fā)生frame變化時(shí)候,滾動(dòng)的時(shí)候,屏幕旋轉(zhuǎn)的時(shí)候。
iOS 用戶響應(yīng)事件
1、UITouch、UIControl、UIGestureRecognizer