iOS內(nèi)存管理(一)ARC內(nèi)存管理原則

ARC是自iOS 5之后增加的新特性,基本消除了手動(dòng)管理內(nèi)存的煩瑣,編譯器會(huì)自動(dòng)在適當(dāng)?shù)牡胤讲迦氘?dāng)?shù)膔etain、release、autorelease語句。你基本不再需要擔(dān)心內(nèi)存管,這里說的是基本,不是全部,為什么呢,后面的會(huì)講到。

  • ARC是編譯器(時(shí))特性,而不是運(yùn)行時(shí)特性,更不是垃圾回收器(GC),而是編譯器特性。這是面試的時(shí)候經(jīng)常被問到
  • 實(shí)現(xiàn)原理:
    RAC通過控制變量的作用域和強(qiáng)弱指針的限制,
  • 規(guī)則:
    ARC的規(guī)則:只要有一個(gè)強(qiáng)指針變量只想對(duì)象,對(duì)象就會(huì)保持在內(nèi)存中不會(huì)被釋放
  • 強(qiáng)/弱指針:
    ARC模式下默認(rèn)所有實(shí)例變量都是強(qiáng)指針,強(qiáng)指針持有對(duì)象
    弱指針指向的對(duì)象唄回收后,弱指針回制動(dòng)復(fù)制為nil

在ARC有效的情況下編譯源代碼,必須遵守一定的規(guī)則。下面的就是具體的ARC的具體規(guī)則。

  • 不能使用使用retain/release/retainCount/autorelease
  • 不能使用NSAllocateObject/NSDeallocateObject
  • 必須遵守北村管理方法命名規(guī)則
  • 不要顯示調(diào)用dealloc
  • 使用@autoreleasepool塊替代NSAutoreleasePool
  • 不能使用區(qū)域(NSZone)
  • 對(duì)象型變量作為c語言結(jié)構(gòu)體(struct/union)的成員
  • 顯示轉(zhuǎn)換“id”和“void”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時(shí)分配內(nèi)存(比如創(chuàng)建一個(gè)對(duì)象,會(huì)增加內(nèi)存占用)與...
    蚊香醬閱讀 5,825評(píng)論 8 119
  • Cocoa內(nèi)存管理機(jī)制 (1)當(dāng)你使用new、alloc、copy方法創(chuàng)建一個(gè)對(duì)象時(shí),該對(duì)象的保留計(jì)數(shù)器值為1.當(dāng)...
    John_LS閱讀 2,878評(píng)論 0 6
  • 37.cocoa內(nèi)存管理規(guī)則 1)當(dāng)你使用new,alloc或copy方法創(chuàng)建一個(gè)對(duì)象時(shí),該對(duì)象的保留計(jì)數(shù)器值為1...
    如風(fēng)家的秘密閱讀 963評(píng)論 0 4
  • 內(nèi)存管理 簡述OC中內(nèi)存管理機(jī)制。與retain配對(duì)使用的方法是dealloc還是release,為什么?需要與a...
    丶逐漸閱讀 2,086評(píng)論 1 16
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,656評(píng)論 30 472

友情鏈接更多精彩內(nèi)容