iOS 的動態(tài)性來自四個方面:動態(tài)類型、動態(tài)綁定、動態(tài)載入、SEL
類型
①、動態(tài)類型<弱類型>(id):在代碼的運行階段判斷代碼的類型,
使用 id 類型可以讓應用在“運行時”使用任何類型來替換。動態(tài)類
型讓程序更加靈活,但是會使數(shù)據(jù)的統(tǒng)一性降低和代碼的可讀性。我
們常用靜態(tài)類型<強類型>(如 NSString) ,使用靜態(tài)類型編譯器可以完
全分析你的代碼,這讓代碼的性能和可預知性更高。
②、動態(tài)綁定:讓代碼在運行時判斷需要調用什么方法,而不是在編
譯時。 動態(tài)類型和動態(tài)綁定使得選擇哪個接收者已經(jīng)調用什么方法
都放到運行時去完成。
③、動態(tài)載入:應用程序可以根據(jù)需要加載可執(zhí)行代碼以及資源,而
不是在啟動時就加載所有資源。
④、SEL 類型 iOS 在編譯的時候會根據(jù)方法的名字(包括參數(shù)序列),
生成一個用來區(qū)分這個方法的唯一的 ID,這個 ID 是 SEL 類型的,SEL
的本質就是類方法的編號[函數(shù)地址]。 (類似 C 語言里面的函數(shù)指針,
但是 OC 的類不能直接使用函數(shù)指針,這樣只能做一個@selector 語
法來取。注意:@selector 是查找當前類(含子類)的方法。)
更多:iOS面試題合集