目标C中的类型转换

文森佐

有人可以告诉我这是否是在目标c中进行类型转换的正确方法。

我有一个对象“ myObject”,它可能是“ DataViewController”的一个实例。如果是这样,我应该调用“ updateView”方法。

if (myObject respondsToSelector:@selector(updateView:)])
{
    [(DataViewController *)myObject updateView:data];
}
谢尔盖·卡里尼琴科(Sergey Kalinichenko)

在这种情况下,您不需要强制转换:由于您已经沿着选择器路径开始,因此您最好调用performSelector:withObject:一致性:

if (myObject respondsToSelector:@selector(updateView:)]) {
    [myObject performSelector:@selector(updateView:) withObject:data];
}

这是一种更通用的方法,因为它可以让您updateView在其他类型的对象(不一定是的对象)上运行DataViewController,只要它们具有适当的方法即可。

如果您想使用基于类型的解决方案,则可以使用如下isKindOfClass:方法:

if (myObject isKindOfClass:[DataViewController class]]) {
    DataViewController *ctrl = (DataViewController)myObject;
    [ctrl updateView:data];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章