0
許多SDK定義的協議,例如。 UITableViewDelegate,符合NSObject協議。有些人,比如NSFastEnumeration,沒有。爲什麼有些Apple框架協議不符合<NSObject>?
有誰知道這可能是爲什麼?
我所能想到的就是蘋果可能已經預料到,從NSObject以外的其他根類(例如NSProxy)繼承的類可能需要符合像NSFastEnumeration這樣的協議,但不是(例如)UITableViewDelegate。但是兩者之間區別的原因並不明顯。
更進一步的證據是,即使是新創建的「低級別」協議,例如「」也不符合'',而像這樣的更老的但更高級別的協議也可以。當然,在某些方面,我將「低級」定義爲「不符合''的那些」,但總的來說,哲學似乎跟隨。例如,比較'NSXPCProxyCreating>'',並考慮每種類型的對象。 –
@RobNapier:我認爲稍微好一點的「低級」定義應該是「定義對象可以實現的特定行爲」,而「高級」協議更像是「在應用程序中定義一個角色,可以填充「。這就是我試圖用「純粹」這個詞來表達的東西 - 它們只是指定一種與具有某些特徵的對象進行對話的統一方式,而不是在更大的設計中定義一個位置。 – Chuck
這很有道理。 (微觀)行爲與(宏觀)角色指定的區別是合理的。我已經編輯了這個問題,使其更具一般性。鑑於符合NSCopying等的類將在實踐中幾乎通過繼承非正式地實施,似乎這種區分主要是文檔問題。這很奇怪,蘋果公司並沒有以某種方式提出這個問題。 –
Cris