0

私はObjective-Cに慣れていません。あるクラスのポインターを持っているかどうかを判断しようとしていますが、代わりにそのポインターに拡張クラスを割り当てると問題が発生します。たとえば、ClassB が ClassA を拡張した場合、次のようにします。

ClassA *foo = [[ClassB alloc] init];

これにより、どこかで問題が発生しますか? Xcode が問題ないように見えることは知っていますが、それで問題ないというわけではありません。

4

1 に答える 1

4

はい、それはポリモーフィズムと呼ばれ、問題なく実行できます。

ただし、Objective-C ではメッセージのディスパッチが動的であるため、クラス B にオーバーライドされたメソッドが含まれている場合、このメソッドが実行されます。これは、既知の基本クラスから継承するクラスのオブジェクトを受け取ることがわかっているが、どのクラスかがわからない場合によく使用されます。これを有利に変えることができます。

于 2013-01-14T22:04:26.920 に答える