我們說的oc是動態執行時語言是什麼意思?

2021-09-08 11:58:54 字數 893 閱讀 3055

1、kvc和kvo區別,分別在什麼情況下使用? 

答:kvc(key-value-coding) kvo(key-value-observing)理解kvc與kvo(鍵-值-編碼與鍵-值-監看) 當通過kvc呼叫物件時,比如:[self valueforkey:@」somekey」]時,程式會自動試圖通過幾種不同的方式解析這個呼叫。首先查詢物件是否帶有 somekey 這個方法,如果沒找到,會繼續查詢物件是否帶有somekey這個例項變數(ivar),如果還沒有找到,程式會繼續試圖呼叫 -(id) valueforundefinedkey:這個方法。如果這個方法還是沒有被實現的話,程式會丟擲乙個nsundefinedkeyexception異常錯誤。 (key-value coding查詢方法的時候,不僅僅會查詢somekey這個方法,還會查詢getsomekey這個方法,前面加乙個get,或者_somekey以及_getsomekey這幾種形式。同時,查詢例項變數的時候也會不僅僅查詢somekey這個變數,也會查詢_somekey這個變數是否存在。) 設計valueforundefinedkey:方法的主要目的是當你使用-(id)valueforkey方法從物件中請求值時,物件能夠在錯誤發生前,有最後的機會響應這個請求。

2、我們說的oc是動態執行時語言是什麼意思? 

答案:多型。 主要是將資料型別的確定由編譯時,推遲到了執行時。 這個問題其實淺涉及到兩個概念,執行時和多型。 簡單來說,執行時機制使我們直到執行時才去決定乙個物件的類別,以及呼叫該類別物件指定方法。 多型:不同物件以自己的方式響應相同的訊息的能力叫做多型。意思就是假設生物類(life)都用有乙個相同的方法-eat; 那人類屬於生物,豬也屬於生物,都繼承了life後,實現各自的eat,但是呼叫是我們只需呼叫各自的eat方法。 也就是不同的物件以自己的方式響應了相同的訊息(響應了eat這個選擇器)。 因此也可以說,執行時機制是多型的基礎。

OC執行時動態建立類

it168技術 在前文 深入淺出cocoa之類與物件 一文中,我已經詳細介紹了objc中的 class 與 object 的概念,今天我們來如何在執行時動態建立類。下面這個函式就是應用前面講到的class,metaclass的概念,在執行時動態建立乙個類。這個函式來自 inside mac os x...

OC 執行時語言踩過的坑

最近 遇到了兩次oc 執行時語言的坑,這讓我對此感到深深的敬畏,貼此 警示後人 碰到最多的是,可變陣列nsmutablearray的排序,從伺服器拿下來的array的陣列,進行直接賦值,不幸將nsmutablearray的型別由 nsmutablearray變成了nsarray,在進行接下來的排序時...

動態型別dynamic和動態語言執行時DLR

1.動態型別與隱式申明的型別或者通過system.object引用宣告的型別有著巨大的不同,動態型別不是強型別的,對於c 編譯器通過dynamic關鍵字宣告的資料點可以分配任意初始值,而且可以在宣告週期內重新分配任何新的值。public void func3 2.var關鍵字不能用於返回值 引數 類...