這段時間經過如下資料學習了 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
。
若是您在閱讀中發現任何錯誤,歡迎指出。
創做不易,點個關注吧!