是否有与 C++ 的 dynamic_cast 等效的 Objective-C?
可以使用以下方法伪造:
MyClass *safeObject = [object isKindOfClass: [MyClass class]]
? (MyClass *)originalObject : nil;
但这需要输入很多代码,即使我不需要经常输入。
我有点生疏,所以这可能不太正确,但我相信 C++ 中的等价物是:
MyClass safeObject = dynamic_cast<MyClass>(orginalObject);
这里的上下文是一个块,其中参数被定义为更通用类的类型,但在这个块中,我“知道”它是一个特定的子类。尽管如此,我不想只是盲目地使用它(MyClass *)originalObject
并忽略理论上可能的错误。
需要明确的是,虽然我很喜欢 a dynamic_cast
,但我也很乐意使用另一种方法来安全地处理这种情况。