是否可以在Objective-C中投射一個對象來告訴編譯器它的類型可能是多種類型之一?Objective-C Multiple Cast
例如,在我的answer to iOS: Two Gestures, One Target-Action中,我知道對象將是UITapGestureRecognizer
或UILongPressGestureRecognizer
,但我不確定哪一個。而且,這兩個類都對numberOfTapsRequired
作出響應,但不通過通用協議。他們只是實施相同的財產。
所以,爲了解決編譯錯誤,我只是將對象強制轉換爲UILongPressGestureRecognizer
。這現在可行,但如果未來版本的iOS SDK更改UITapGestureRecognizer
numberOfTapsRequired
屬性的名稱(並保留UILongPressGestureRecognizer
未更改),則我的代碼將編譯但會在雙擊時遇到無法識別的選擇器異常。所以,如果有一種方法我可以告訴編譯器,「嘿,我知道這個對象是兩種類型之一」,那麼這將允許我做一個準確的演員。
如果你不能在Objective-C中做到這一點,是否有任何編程語言允許這樣做?我聽說C#幾乎可以讓你做任何事情。
保持簡單,只需使用兩個目標動作 – zaph