Существует ли Objective-C эквивалент С++ dynamic_cast?
Его можно подделать, используя это:
MyClass *safeObject = [object isKindOfClass: [MyClass class]]
? (MyClass *)originalObject : nil;
Но это много кода для ввода, даже если мне не нужно вводить его часто.
Я немного ржавый, так что это может быть не совсем правильно, но я считаю, что эквивалент в С++ будет:
MyClass safeObject = dynamic_cast<MyClass>(orginalObject);
Контекст здесь - это блок, где параметр определяется как тип более общего класса, но в этом блоке я "знаю" его конкретный подкласс. Тем не менее, я не хочу просто бросать его вслепую с помощью (MyClass *)originalObject
и игнорировать теоретически возможную ошибку.
Чтобы быть ясным, хотя мне бы понравился dynamic_cast
, я был бы доволен альтернативным подходом к безопасному обращению с этим делом.