一、Runtime
- 一個objc對象的isa的指針指向什麼?有什麼作用?
- 一個 NSObject 對象佔用多少內存空間?
- 說一下對 class_rw_t 的理解?
- 說一下對 class_ro_t 的理解?
- 說一下對 isa 指針的理解
- 說一下 Runtime 的方法緩存?存儲的形式、數據結構以及查找的過程?
- 使用runtime Associate方法關聯的對象,需要在主對象dealloc的時候釋放麼?
- 實例對象的數據結構?
- 什麼是method swizzling(俗稱黑魔法)
- 什麼時候會報unrecognized selector的異常?
- 如何給 Category 添加屬性?關聯對象以什麼形式進行存儲?
- 能否向編譯後得到的類中增加實例變量?能否向運行時創建的類中添加實例變量?爲什麼?
- 類對象的數據結構?
- runtime如何通過selector找到對應的IMP地址?
- runtime如何實現weak變量的自動置nil?知道SideTable嗎?
- objc中向一個nil對象發送消息將會發生什麼?
- objc在向一個對象發送消息時,發生了什麼?
- isKindOfClass 與 isMemberOfClass
- Category 在編譯過後,是在什麼時機與原有的類合併到一起的?
- Category 有哪些用途?
- Category 的實現原理?
- _objc_msgForward函數是做什麼的
- [self class] 與 [super class]
- 代碼題 一
- 代碼題 二
二、Runloop
- 爲什麼 NSTimer 有時候不好使?
- AFNetworking 中如何運用 Runloop?
- autoreleasePool 在何時被釋放?
- PerformSelector 的實現原理?
- PerformSelector:afterDelay:這個方法在子線程中是否起作用?爲什麼?怎麼解決?
- RunLoop的Mode
- RunLoop的實現機制
- RunLoop和線程
- RunLoop的數據結構
- RunLoop概念
- RunLoop與NSTimer
- 講一下 Observer ?
- 解釋一下 NSTimer
- 解釋一下
事件響應
的過程? - 解釋一下 手勢識別 的過程?
- 什麼是異步繪製?
- 利用 runloop 解釋一下頁面的渲染的過程?
三、Objective_C語言特性
四、Animation
五、Block
七、多線程
- 進程、線程
- 多進程、多線程
- 任務、隊列
- iOS中的多線程
- GCD---隊列
- 死鎖
- GCD任務執行順序
- dispatch_barrier_async
- dispatch_group_async
- Dispatch Semaphore
- 延時函數(dispatch_after)
- 使用dispatch_once實現單例
- NSOperationQueue的優點
- NSOperation和NSOperationQueue
- NSThread+runloop實現常駐線程
- 自旋鎖與互斥鎖
八、內存管理
- 在 Obj-C 中,如何檢測內存泄漏?你知道哪些方式?
- 在 MRC 下如何重寫屬性的 Setter 和 Getter_
- 循環引用
- 說一下什麼是
懸垂指針
?什麼是野指針
? - 說一下對 retain,copy,assign,weak,_Unsafe_Unretain 關鍵字的理解
- 是否瞭解 深拷貝 和 淺拷貝 的概念,集合類深拷貝如何實現
- 使用自動引用計數應遵循的原則
- 能不能簡述一下 Dealloc 的實現機制
- 內存中的5大區分別是什麼?
- 內存管理默認的關鍵字是什麼?
- 內存管理方案
- 內存佈局
- 講一下
iOS
內存管理的理解 - 講一下
@dynamic
關鍵字? - 簡要說一下
@autoreleasePool
的數據結構? - 訪問
__weak
修飾的變量,是否已經被註冊在了@autoreleasePool
中?爲什麼? retain
、release
的實現機制?- MRC(手動引用計數)和ARC(自動引用計數)
BAD_ACCESS
在什麼情況下出現?
作者:iOS開發_小迷糊
鏈接:https://www.jianshu.com/p/0d4d8a79fd97