Objective-C でオブジェクトをキャストして、その型が多くの型の 1 つになる可能性があることをコンパイラに伝えることは可能ですか?
たとえば、iOS: Two Gestures, One Target-Action に対する私の回答では、オブジェクトが aUITapGestureRecognizer
または aになることはわかっていますが、どちらかはわかりUILongPressGestureRecognizer
ません。そして、これらのクラスは両方ともnumberOfTapsRequired
共通のプロトコルに応答しますが、それを介してではありません。どちらも同じプロパティを実装しています。
したがって、コンパイラ エラーを回避するために、オブジェクトを としてキャストするだけUILongPressGestureRecognizer
です。これは現在は機能しますが、iOS SDK の将来のバージョンでUITapGestureRecognizer
numberOfTapsRequired
プロパティの名前が変更された場合 (および変更されていUILongPressGestureRecognizer
ないままになっている場合)、コードはコンパイルされますが、ダブルタップで認識されないセレクター例外が発生してクラッシュします。
したがって、コンパイラに「このオブジェクトが 2 つの型のいずれかであることはわかっています」と伝える方法があれば、正確なキャストを行うことができます。
Objective-C でこれを行うことができない場合、これを許可するプログラミング言語はありますか? C# では何でもできると聞きました。