iOS經典面試題
阿新 • • 發佈:2019-02-19
@property中有哪些屬性關鍵字? weak屬性需要在dealloc中置nil麼? @synthesize和@dynamic分別有什麼作用? ARC下,不顯式指定任何屬性關鍵字時,預設的關鍵字都有哪些? 用@property宣告的NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什麼?如果改用strong關鍵字,可能造成什麼問題? @synthesize合成例項變數的規則是什麼?假如property名為foo,存在一個名為_foo的例項變數,那麼還會自動合成新變數麼? 在有了自動合成屬性例項變數之後,@synthesize還有哪些使用場景? objc中向一個nil物件傳送訊息將會發生什麼? objc中向一個物件傳送訊息[obj foo]和objc_msgSend()函式之間有什麼關係? 什麼時候會報unrecognized selector的異常? 一個objc物件如何進行記憶體佈局?(考慮有父類的情況) 一個objc物件的isa的指標指向什麼?有什麼作用? 下面的程式碼輸出什麼?
runtime如何通過selector找到對應的IMP地址?(分別考慮類方法和例項方法) 使用runtime Associate方法關聯的物件,需要在主物件dealloc的時候釋放麼? objc中的類方法和例項方法有什麼本質區別和聯絡? _objc_msgForward函式是做什麼的,直接呼叫它將會發生什麼? runtime如何實現weak變數的自動置nil? 能否向編譯後得到的類中增加例項變數?能否向執行時建立的類中新增例項變數?為什麼? runloop和執行緒有什麼關係? runloop的mode作用是什麼? 以+ scheduledTimerWithTimeInterval...的方式觸發的timer,在滑動頁面上的列表時,timer會暫定回撥,為什麼?如何解決? 猜想runloop內部是如何實現的? objc使用什麼機制管理物件記憶體? ARC通過什麼方式幫助開發者管理記憶體? 不手動指定autoreleasepool的前提下,一個autorealese物件在什麼時刻釋放?(比如在一個vc的viewDidLoad中建立) BAD_ACCESS在什麼情況下出現? 蘋果是如何實現autoreleasepool的? 使用block時什麼情況會發生引用迴圈,如何解決? 在block內如何修改block外部變數? 使用系統的某些block api(如UIView的block版本寫動畫時),是否也考慮引用迴圈問題?
GCD的佇列(dispatch_queue_t)分哪兩種型別?
如何用GCD同步若干個非同步呼叫?(如根據若干個url非同步載入多張圖片,然後在都下載完成後合成一張整圖)
dispatch_barrier_async的作用是什麼?
蘋果為什麼要廢棄dispatch_get_current_queue?