Ich möchte prüfen, ob ein Objekt (zB someObject
) einer Variablen eines anderen Typs (zB SpecifiedType
) zuweisbar (umsetzbar ) ist. In Java kann ich schreiben:
someObject instanceof SpecifiedType
Eine verwandte Frage ist, ob der Laufzeittyp eines Objekts einem anderen Typ entspricht. In Java kann ich schreiben:
someObject.getClass().equals(SpecifiedType.class)
Wie kann dies in Objective-C durchgeführt werden?
Antworten:
Versuchen Sie
[myObject class]
, die Klasse eines Objekts zurückzugeben.Sie können genaue Vergleiche anstellen mit:
aber nicht durch direkte
MyClass
Kennung.Ebenso können Sie feststellen, ob das Objekt zu einer Unterklasse Ihrer Klasse gehört, mit:
wie von Jon Skeet und Zoul vorgeschlagen.
quelle
if ([myObject isMemberOfClass:[MyClass class]])
Aus Wikipedia :
isKindOfClass:
wäre am nächsteninstanceof
, durch die Geräusche davon.quelle
Siehe die Methode isKindOfClass: in der NSObject- Dokumentation. (Das übliche Warnwort für eine solche Frage ist, dass das Überprüfen der Objektklasse oft ein Zeichen dafür ist, dass etwas falsch gemacht wurde.)
quelle
+ (BOOL)conformsToProtocol:(Protocol *)aProtocol
.