標籤:
1.你使用過Objective-C的運行時編程(Runtime Programming)嗎?如果使用過,你用它做了什嗎?你還能記得你所使用的相關的標頭檔或者某些方法的名稱嗎?
Objecitve-C的重要特性是Runtime(運行時),在#import <objc/runtime.h> 下能看到相關的方法,用過objc_getClass()和class_copyMethodList()擷取過私人API;使用
```objective-c
Method method1 = class_getInstanceMethod(cls, sel1);
Method method2 = class_getInstanceMethod(cls, sel2);
method_exchangeImplementations(method1, method2);
2.你實現過多線程的Core Data嗎?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要線上程中建立或者傳遞?你是用什麼樣的策略來實現的?
3.Core開頭的系列的內容。是否使用過CoreAnimation和CoreGraphics。UI架構和CA,CG架構的聯絡是什嗎?分別用CA和CG做過些什麼動畫或者映像上的內容。(有需要的話還可以涉及Quartz的一些內容)
4.是否使用過CoreText或者CoreImage等?如果使用過,請談談你使用CoreText或者CoreImage的體驗。
5.NSNotification和KVO的區別和用法是什嗎?什麼時候應該使用通知,什麼時候應該使用KVO,它們的實現上有什麼區別嗎?如果用protocol和delegate(或者delegate的Array)來實作類別似的功能可能嗎?如果可能,會有什麼潛在的問題?如果不能,為什嗎?(雖然protocol和delegate這種東西面試已經面爛了…)
6.你用過NSOperationQueue嗎?如果用過或者瞭解的話,你為什麼要使用NSOperationQueue,實現了什嗎?請描述它和G.C.D的區別和類似的地方(提示:可以從兩者的實現機制和適用範圍來描述)。
7.既然提到G.C.D,那麼問一下在使用G.C.D以及block時要注意些什嗎?它們兩是一回事兒嗎?block在ARC中和傳統的MRC中的行為和用法有沒有什麼區別,需要注意些什嗎?
8.您是否做過非同步網路處理和通訊方面的工作?如果有,能具體介紹一些實現策略嗎?
9.對於Objective-C,你認為它最大的優點和最大的不足是什嗎?對於不足之處,現在有沒有可用的方法繞過這些不足來實現需求。如果可以的話,你有沒有考慮或者實踐過重新實現OC的一些功能,如果有,具體會如何做?
1:isa指標2:動態能力(運行時決定)3:
範疇(
categories
)-------為某個類添加方法而又不必製作子類4:
協議(protocols)-------非常相似java中的介面Interface 動態能力使程式可以突破編譯和串連時的約束,將更多符號辨識的工作轉移到處於受控狀態的運行環境上。
動態類—在運行時確定對象的類 id資料類型,
表示任意的Cocoa對象,可通過
內省在運行時確定所屬的類。
動態綁定—在運行時確定要調用的方法
運行時的訊息分發機制
動態裝載—在運行時為程式增加新的模組
Cocoa程式可以在需要的時候才裝載執行代碼和資源
10.你實現過一個架構或者庫以供別人使用嗎?如果有,請談一談構建架構或者庫時候的經驗;如果沒有,請設想和設計架構的public的API,並指出大概需要如何做、需要注意一些什麼方面,來使別人容易地使用你的架構。
iOS進階必備