是否可以在 Objective-C 中强制转换一个对象,以便告诉编译器它的类型可能是众多类型之一?
例如,在我对 iOS: Two Gestures, One Target-Action 的回答中,我知道一个对象要么是 a 要么是UITapGestureRecognizer
aUILongPressGestureRecognizer
但不确定是哪一个。而且,这两个类都响应numberOfTapsRequired
但不是通过通用协议。它们只是实现了相同的属性。
因此,为了避免编译器错误,我只是将对象转换为UILongPressGestureRecognizer
. 这现在有效,但是如果 iOS SDK 的未来版本更改了UITapGestureRecognizer
numberOfTapsRequired
属性的名称(并UILongPressGestureRecognizer
保持不变),那么我的代码将编译但在双击时会因无法识别的选择器异常而崩溃。
因此,如果有一种方法可以告诉编译器,“嘿,我知道这个对象是两种类型之一”,那么这将使我能够进行准确的转换。
如果你不能在 Objective-C 中做到这一点,是否有任何编程语言允许这样做?我听说 C# 几乎可以让你做任何事情。