目标C中的安全铸造

Cas*_*ash 8 objective-c

在Objective-C中有类似C++的安全演员吗?

我知道它们是Objective C++,但我不确定可能的副作用.使用Objective C++可能会减慢编译时间 - 是否还有其他原因不使用它?

Cas*_*ash 10

Objective-c确实有C++安全转换.或者,我们可以使用运行时反射:

id myOb=[someObject getObject];
NSAssert([myOb isKindOfClass:[MyClass class]], @"Return value is not of type MyClass as expected.");
MyClass * newOb= (MyClass *)myOb;
Run Code Online (Sandbox Code Playgroud)

参考文献:

可爱与爱:

  • 将id myObj强制转换为MyClass*是多余的.可以将ID自由分配给任何对象类型的变量. (5认同)