iOS - 老生常談內存管理:導讀

導讀

這段時間經過如下資料學習了 Objective-C 的內存管理:html

並總結了如下文章:面試

文章大綱:編程

如下列舉了部分有關內存管理的問題。若是你對如下問題存在疑惑,或者只有模糊的答案,那麼本系列文章能夠給予你幫助。安全

  • iOS 的內存管理方案有哪些?多線程

  • 講講 iOS 的內存管理機制app

  • 引用計數機制是怎麼工做的?ide

  • 引用計數存儲在哪裏?之前存儲在哪?如今呢?源碼分析

  • 能聊聊 isa 嗎?什麼是 nonpointer ?post

  • SideTable 你有了解過嗎,它是用來幹嗎的?學習

  • 引用計數具體是怎麼管理的,你能說說內存管理方法的實現嗎?

  • 聊聊 MRC 下的內存管理規則吧?

  • MRC 下何時須要給對象發送 release 消息?何時使用 autorelease?

  • 爲何不要在初始化方法和 dealloc 中使用訪問器方法?

  • 爲何初始化方法中須要 self = [super init]?

  • 你能講一下 super 的原理嗎?

  • ARC 的內存管理規則?

  • ARC 下沒有 retain / release 等方法了嗎?

  • Toll-Free Bridged 瞭解過嗎?詳細描述一下。

  • 全部權修飾符有哪些?

  • weak 變量在對象被銷燬後是如何置爲 nil 的,Runtime 是怎樣實現它的?

  • Runtime 爲 weak 變量賦值的過程?

  • 既然 __weak 更安全,那麼爲何已經有了 __weak 還要保留 __unsafe_unretained ?

  • 循環引用是怎麼產生的?MRC 下是如何避免循環引用問題的?

  • ARC 下哪些狀況會產生循環引用?如何解決?

  • 釋放 NSAutoreleasePool 對象,使用 [pool release] 與 [pool drain] 的區別?

  • @autoreleasepool 你瞭解多少?

  • @autoreleasepool 的實現原理?

  • 何時須要本身建立 @autoreleasepool?

  • ARC 環境下,方法裏的局部對象何時釋放?

  • ARC 環境下,autorelease 對象在何時釋放?

  • ARC 環境下,需不須要手動添加 @autoreleasepool?

  • Tagged Pointer 是什麼?

  • 如何判斷 Tagged Pointer ?

閱讀注意

爲避免語義混淆,全部文章中的 「釋放」 一詞均指release,「銷燬」 一詞均指dealloc

若是您在閱讀中發現任何錯誤,歡迎指出。

創做不易,點個關注吧!

相關文章
相關標籤/搜索