明智地使用內(nèi)省可以使程序更加高效和強壯

內(nèi)省的英文是Introspection,是面向?qū)ο笳Z言的一大特性。
內(nèi)省是對象揭示對向自己作為運行時對象詳細信息的一種能力。
比如說對象在繼承樹上的位置,實現(xiàn)了哪種協(xié)議,響應了哪個消息。

用途

  1. 判斷繼承關(guān)系。比如說什么class,superclass方法。
  2. 檢查從屬關(guān)系,比如說isKindOfClass,這不就是反射嘛。
  3. 判斷是否實現(xiàn)了某方法,respondsToSelector。
  4. 判斷是否實現(xiàn)了某協(xié)議,confirmsToProtocol。
  5. 判斷對象是否相等,hash返回對象所在哈希表的位置,isEqual能判斷2個對象指針是否相等。

isEqual是如何比較對象的

  1. 首先檢查指針是否相等。
  2. 類是否相同。
  3. 調(diào)用對象的比較器,比如說對于NSString而言對象的比較器就是isEqualToString,對于NSTimeZone的比較器就是isEqualToTimeZone,簡單而言就是特定類型的對象交給特定類型的比較器去比較。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 對數(shù)據(jù)的等同性判斷包括對基本數(shù)據(jù)類型等同性的判斷和對象等同性的判斷。對基本數(shù)據(jù)類型等同性的判斷是非常簡單的,...
    VV木公子閱讀 1,787評論 0 8
  • mac下無VISIO,看到介紹OmniGraffle,是完美的代替軟件,除了畫圖,還有對圖片的注釋也是很出色,很漂...
    春風仿佛愛情閱讀 4,677評論 1 2
  • 做一些以為孩子們都“不懂”的逗弄行為。孰不知,這些都可能成為一把利劍,刺傷了孩子們幼小的心靈。大人們總是主觀的認為...
    羽一教育肖莉麗閱讀 150評論 0 0
  • 1 “哪有人生崽會腿殘疾的?” 義務教育第六年的時候,我那個長得像周杰倫的語文教師在講臺上說。在我們那兒,教師大都...
    初起閱讀 269評論 1 2

友情鏈接更多精彩內(nèi)容