¿Hay un equivalente en Objective-C de dynamic_cast de C++?Objective-C dynamic_cast?
Se puede ser falsificada usando esto:
MyClass *safeObject = [object isKindOfClass: [MyClass class]]
? (MyClass *)originalObject : nil;
Pero esto es una gran cantidad de código para escribir, incluso si yo no necesito para escribir a menudo.
estoy un poco oxidado por lo que esto podría no ser del todo bien, pero creo que el equivalente en C++ sería:
MyClass safeObject = dynamic_cast<MyClass>(orginalObject);
El contexto aquí es un bloque donde el parámetro se define como un tipo de una clase más genérica, pero en este bloque "sé" que es una subclase específica. Sin embargo, no quiero simplemente lanzarlo a ciegas con (MyClass *)originalObject
e ignorar un error teóricamente posible.
Para ser claro, aunque me encantaría un dynamic_cast
, estaría encantado con un enfoque alternativo para manejar de forma segura este caso también.
En el peor de los casos, podría escribir una macro para esto. – JustSid
Objective-C está escrito en pato. Honestamente, los moldes "complicados" están remar contra el lenguaje. – zneak
Sí, estoy pensando que probablemente hice la pregunta incorrecta aquí. Cualquier pregunta que * debería haber * preguntado tenía una respuesta de "simplemente use' NSAssert ([object isKindOfClass: [MyClass class]], @ "blahblah") 'porque de todos modos no lo espera." :) –