Chciałbym sprawdzić, czy obiekt (np. someObject
) Można przypisać (można go rzutować) do zmiennej innego typu (np SpecifiedType
.). W Javie mogę pisać:
someObject instanceof SpecifiedType
Powiązanym pytaniem jest ustalenie, czy typ środowiska wykonawczego obiektu jest równy innemu typowi. W Javie mogę pisać:
someObject.getClass().equals(SpecifiedType.class)
Jak można to zrobić w Celu C?
Odpowiedzi:
Spróbuj
[myObject class]
zwrócić klasę obiektu.Możesz dokonać dokładnych porównań z:
ale nie przy użyciu bezpośredniego
MyClass
identyfikatora.Podobnie możesz sprawdzić, czy obiekt należy do podklasy twojej klasy za pomocą:
zgodnie z sugestią Jona Skeeta i Zoula.
źródło
if ([myObject isMemberOfClass:[MyClass class]])
Z Wikipedii :
isKindOfClass:
byłoby najbliżejinstanceof
, na podstawie jego dźwięków.źródło
Zobacz metodę isKindOfClass: w dokumentacji NSObject . (Zwykle słowo ostrzeżenia w przypadku takiego pytania jest takie, że sprawdzenie klasy obiektu jest często oznaką zrobienia czegoś złego.)
źródło
+ (BOOL)conformsToProtocol:(Protocol *)aProtocol
.