iOS面試相關

1.weak和assign的區(qū)別

weak
  • 只能修飾對象
  • 當引用計數(shù)為0時,會將指針置空不會出現(xiàn)野指針
assign
  • 能修飾對象和基本數(shù)據(jù)類型
  • 如果修飾的是對象,當引用計數(shù)為0時,不會將指針置空,是不安全的
為什么weak會被置空?
系統(tǒng)會維護一個weak表(哈希表[對象地址: weak指針地址]),用來存儲指向某個對象的所有weak指針;當對象被釋放時通過對象指針查詢weak表找到weak指針地址并置為nil,然后再從weak表中移除此對象地址的key完成置空

2.copy和strong應用場景

copy
  • 深拷貝,當對其賦值的時候會復制一份新的內容,與復制的對象不會公用一塊內存地址
  • 適用于可能在可變不可變對象之間操作的場景(NSMutableString等含有Mutable的對象)
strong
  • 淺拷貝,當對其賦值的時候只會復制內存地址,與復制的對象公用一塊內存地址
  • 適用于不可變對象之間操作

3.響應鏈

相應鏈其實就是時間傳遞的過程,通俗的理解就是系統(tǒng)接收到事件之后是如何響應傳遞的;
簡單地說,事件是從下往上依次傳遞的或者說父->子傳遞,能夠響應事件必須繼承于UIResponder,如UIView,對應的CALayer則無法響應;

舉例:
一個vc上的view上添加一個button,那么順序依次是UIWindow-> UIView->UIButton

4.UIView和CALayer區(qū)別

5.分類和擴展

即Category和Extension
這兩個在OC中都是比較常用的
先說Extension,其實我們.m文件中所定義的@interface就是擴展,好處就是我們可以很方便的添加私有成員變量和私有函數(shù)

后續(xù)補充
#6.二叉樹
#7.排序
#8.CoreData
#9.網絡
#10.內存管理
#11.隊列
#12.內存分配
#13.init和alloc
#14.kvc和kvo
#15.鏈表

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容