1瑟押、 runtime用過嗎搀捷?runloop用過嗎?實際項目中用到的場景多望?
RunTime簡稱運行時嫩舟。就是系統(tǒng)在運行的時候的一些機制,其中最主要的是消息機制怀偷。對于C語言家厌,函數(shù)的調用在編譯的時候會決定調用哪個函數(shù)。
[self goHome];//這是我們常見的方法調用椎工,通過clang編譯器饭于,它卻是這樣的
objc_msgSend(obj,@selector(goHome));
首先,編譯器將代碼[obj goHome];轉化為objc_msgSend(obj,@selector(GoHome));晋渺,在objc_msgSend函數(shù)中镰绎。首先通過obj的isa指針找到obj對應的class。在Class中先去cache中通過SEL查找對應函數(shù)method(猜測cache中method列表是以SEL為key通過hash表來存儲的木西,這樣能提高函數(shù)查找速度)畴栖,若cache中未找到。再去methodList中查找八千,若methodlist中未找到吗讶,則取superClass中查找燎猛。若能找到,則將method加入到cache中照皆,以方便下次查找重绷,并通過method中的函數(shù)指針跳轉到對應的函數(shù)中去執(zhí)行。
2膜毁、類和擴展有什么區(qū)別昭卓,分別是干什么的?實際項目中用到的場景瘟滨?
3候醒、多線程GCD,NSOperition用到的場景平時開發(fā)時候杂瘸。
4倒淫、UIView和UILayer有什么關系,平時用layer多嗎败玉?場景敌土?
5、socket平時用過嗎运翼?用到了系統(tǒng)的哪些類返干?場景?
GCDAsyncSocket.h
6南蹂、block用的多嗎犬金?場景?
7六剥、_ _ weak和_ _block的區(qū)別晚顷?
8、通知疗疟、代理该默、block有什么區(qū)別,平時用到的場景策彤?
9栓袖、平時開發(fā)過程中用到的設計模式有哪里?
10店诗、MVC三者之間的關系裹刮?
1)Model 和 View 永遠不能相互通信,只能通過 Controller 傳遞庞瘸。
2)Controller 可以直接與 Model 對話(讀寫調用 Model)捧弃,Model 通過 Notification 和 KVO 機制與 Controller 間接通信。
3)Controller 可以直接與 View 對話,通過 outlet违霞,直接操作 View蚌讼,outlet 直接對應到 View 中的控件永乌,View 通過 action 向 Controller 報告事件的發(fā)生(如用戶 Touch 我了)。Controller 是 View 的直接數(shù)據(jù)源(數(shù)據(jù)很可能是 Controller 從 Model 中取得并經過加工了)努咐。Controller 是 View 的代理(delegate)武通,以同步 View 與 Controller荤牍。
11吏廉、OC的內存管理機制植康?簡要說明一下。
12弹砚、swift和OC的區(qū)別是什么双仍?
13、TCP/UDP的區(qū)別桌吃?分別是什么?
14苞轿、KVC茅诱、KVO分別是什么?實際開發(fā)中什么時候會用到搬卒?