0

実際のクラスを直接知らずにクラスをキャストする方法はありますか?

例えば

if ([editedObject isKindOfClass:[object class]])
{
    object = editedObject;
}

私はこのコードを持っています。オブジェクトを「object」というメソッドに渡します。はクラスだとしましょうobjectが、Personクラスである可能性もありますAnimal。だから私はこれを行うことはできません:

object = (Person *)editedObject;

そのクラスが確かにわからないからです。では、クラスを直接知らずにキャストするにはどうすればよいでしょうか。

ありがとう。

4

1 に答える 1

0

あなたがやろうとしていることは意味がありません。異なるオブジェクト ポインター型は、純粋にコンパイル時のものです。あるオブジェクト ポインター型から別のオブジェクト ポインター型へのキャストは、純粋に構文上の便宜のためであり、実行時に "操作" を実行しません (オブジェクトがキャスト先の型であることを確認することさえしません)。

したがって、コンパイル時に型が「わからない」場合、キャストによって利用する構文上の利便性はありません。したがって、「キャスティング」にはまったく意味がありません。

于 2012-07-26T21:19:47.723 に答える