2010-06-27 3 views
3

Y at-il une réelle différence entre:isMemberOfClass vs comparer les classes avec ==

id value; 
BOOL compare1 = [value isMemberOfClass:[SomeClass class]]; 
BOOL compare2 = [value class] == [SomeClass class]; 

pour vérifier si value est un objet SomeClass?

+0

Il me semble que isMemberOfClass fonctionnera aussi sur les classes dérivées. Je ne connais pas Cocoa, alors ne me tuez pas si je me trompe. –

+0

@Jouke, pas de mise à mort, mais vous le confondez avec 'isKindOfClass:' (** ** est aussi celui qui accepte les classes dérivées) - 'isMemberOfClass:' vérifie uniquement l'appartenance spécifique avoir besoin;-). –

Répondre

7

Si value est un NSProxy, isMemberOfClass: va bien vérifier l'objet approximé, l'autre construction, je crois, ne (je pense qu'il gauchement en double isProxy:).

+0

Yup - vous avez raison (j'ai oublié de NSProxy). Supprimé ma réponse Utilisez 'isMemberOfClass:' comme il est toujours correct alors que '==' a des trous. – bbum

Questions connexes