2012-02-11 144 views
2

可可對象是 meta 類對象。據我所知,這實際上是Objective-C類,但沒有規範。 那麼如何檢查兩個類對象之間的相等性?如何檢查一個類(元類對象)對象是否與另一個類對象相等

Class a = [@"" class]; 
Class b = [[NSObject alloc] init] class]; 

BOOL c = (a == b); // Is this right? 
+1

只要是明確的,在'class'方法返回一個類,而不是一元類。 – jlehr 2012-02-11 17:15:48

+0

@jlehr我在代碼中發現了嚴重錯誤。謝謝。 – Eonil 2012-02-12 03:52:41

+0

可能重複的[如何確定類B是否是類A的子類?](http://stackoverflow.com/questions/7282249/how-to-determine-whether-class-b-is-a-subclass- a) – Eonil 2014-05-27 11:12:55

回答

4

madmik3是正確的。用你上面的例子,如果你測試了[a isKindOfClass:[b class]],它會測試YES,因爲NSString從NSObject繼承。

如果你想測試確切的類相等性,你可以使用isMemberOfClass:,它不包括繼承。在你的例子中[a isMemberOfClass:[b class]]將被測試爲NO,因爲NSString是與NSObject不同的類。

根據我的經驗,通常使用類方法進行測試,例如, [aMemberOfClass:[NSString類]]。

享受,

達明

相關問題