2016-11-16 54 views
0
if ([aClass class] == [bClass class]) { 

} 

可以使用==或!=來比較[aClass類]和[bClass類]嗎?

if ([[aClass class] isEqual:[bClass class]]) { 

} 
如果不是

,爲什麼呢?

+0

也看這裏:http://stackoverflow.com/questions/16424298/why-is-class-nsclassfromstringnsstringfromclass-class-on-os-x – plu

+1

那些結構 您可以使用,如果([someObject isKindOfClass:[NSManagedObject class]]){} –

+0

@DevanshuSaini你不想在這裏使用'isKindOfClass'。 'isMemberOfClass'會更好。 – rmaddy

回答

0

您可以使用isMemberOfClass同時檢查對象屬於同一類這樣

if ([aClas isMemberOfClass:class] && [bClas isMemberOfClass:class]) { 

} 
+0

這是不正確的。 'isKindOfClass'檢查接收方是否是類的實例或從類繼承的任何類的實例。 – rmaddy

+0

你們倆都是對的:-)。例如,考慮實際類不是NSString而是__NSCFString的情況。從開發人員的角度來看,他們是一樣的。但從技術上講,它們屬於不同的類別。 –

+0

@ВладимирВодолазкий這不是我所指的例子。假設'aClas'是'UIView','bClas'是'UIControl'。最後'class'是'UIResponder'。這個答案中的'if'陳述將是真實的,但顯然'aClas'和'bClas'不一樣。 – rmaddy

0

是,類對象總是可以用物理平等(==!=)進行比較。每個類總會有一個類對象。兩個不同的類對象永遠不會「平等」。

相關問題