Domanda

Vorrei verificare se un oggetto (ad esempio someObject) è programmabile (Cast-grado) di una variabile di un altro tipo (ad esempio SpecifiedType). In Java, posso scrivere:

someObject instanceof SpecifiedType

Una questione collegata è trovare se il tipo di esecuzione di un oggetto è uguale a un altro tipo. In Java, posso scrivere:

someObject.getClass().equals(SpecifiedType.class)

Come può essere fatto in Objective-C?

È stato utile?

Soluzione

[myObject class] provare per restituire la classe di un oggetto.

È possibile fare paragoni esatti con:

if ([myObject class] == [MyClass class])

, ma non utilizzando identificatore direttamente MyClass.

In modo simile, è possibile trovare se l'oggetto è di una sottoclasse della classe con:

if ([myObject isKindOfClass:[AnObject class]])

come suggerito da Jon Skeet e Zoul.

Altri suggerimenti

Wikipedia :

  

In Objective-C, per esempio, sia la   Object generico e NSObject (in   Cacao / OpenStep) forniscono il metodo   isMemberOfClass: che restituisce true se   l'argomento del metodo è un   istanza della classe specificata. Il   Metodo isKindOfClass: analogamente   restituisce true se l'argomento eredita   dalla classe specificata.

isKindOfClass: sarebbe più vicino alla instanceof, dai suoni di esso.

Vedere la isKindOfClass: metodo nel NSObject documentazione. (La parola usuale di avvertimento per tale domanda è che il controllo della classe di oggetti è spesso un segno di fare qualcosa di sbagliato.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top