內(nèi)存管理知識(shí)點(diǎn)總結(jié)
1 內(nèi)存管理對(duì)象
值類型和引用類型
** 值類型:** 比如 int float struct 等基本數(shù)據(jù)類型 蘋果內(nèi)部自己管理招狸。原因是內(nèi)存都放在棧上面,是一塊連續(xù)的存儲(chǔ)地嗤栓。遵循先進(jìn)后出的原則烈菌。
引用類型: 是繼承NSObject類的所有OC對(duì)象矮嫉。內(nèi)存需要自己管理滑臊。(事故重發(fā)地)痰娱,原因是內(nèi)存放在堆上面弃榨,彼此之間有內(nèi)存空隙,不是連續(xù)的梨睁。如果不管理收回鲸睛,容易引起內(nèi)存泄漏或者野指針的問題。
堆內(nèi)存和棧內(nèi)存之間的特點(diǎn)
堆內(nèi)存 空間大坡贺,不連續(xù)
棧內(nèi)存 空間小官辈,連續(xù)箱舞,數(shù)量過大影響性能
2 內(nèi)存管理方式
MRC 和 ARC
MRC: 手工引用計(jì)數(shù),所有對(duì)象都需要手動(dòng)的 retain release 遵守誰(shuí)創(chuàng)建誰(shuí)回收拳亿。當(dāng)retaincount為0晴股,必須回收。不然內(nèi)存泄漏肺魁。繼續(xù)釋放电湘,就會(huì)野指針。
ARC: 自動(dòng)引用計(jì)數(shù) 系統(tǒng)會(huì)自動(dòng)的釋放對(duì)象鹅经,不需要release寂呛。
內(nèi)存有關(guān)的修飾符
strong : 強(qiáng)引用 ,ARC中使用 ,與MRC中retain類似
weak : 弱引用 ,ARC使用 瞬雹,如果對(duì)象釋放了昧谊,指向nil,避免野指針,比assign好一點(diǎn)酗捌。
assign : 弱引用 基本上應(yīng)用于基本數(shù)據(jù)類型
retain : 持有類型呢诬,retain count + 1
copy : 拷貝特性,對(duì)象拷貝
nonatomic : 非原子特性,多線程訪問胖缤,線程不安全
atomic : 原子特性尚镰,多線程安全,
readwrite : 讀寫哪廓,getter setter方法
readonly : 只讀 生成getter 不生成setter方法
3 MRC和ARC的混編
ARC中使用MRC的文件狗唉,MRC文件添加編譯選項(xiàng)-fno-objc-arc
相反 添加-fobjc-arc