在一个类的父类中什么情况下 self 可以表示为它的子类的对象?self 不应该是在哪个类中表示那个类的对象吗?
人生最曼妙的风景,竟是内心的淡定与从容!
iOS の self キーワードには多くの意味と規則がありますが、それがどのクラスのオブジェクトを参照するかを意味するものではありません。まず、この問題を修正してください。 Self は現在のクラスのオブジェクトを表し、質問で示されている図は、現在のクラスとすべての親の場合に [self class] を呼び出していると理解できます。クラスがこのメソッドをオーバーライドしていない場合、NSObject のクラス メソッドが呼び出されます。
さらに、OC の self キーワードは、スコープごとに異なる意味と機能を持ちます。インスタンス メソッドでは、self はオブジェクトの最初のアドレスを表しますが、クラス メソッドでは、self は現在のクラスを表します。OC では、Class もオブジェクトなので、self は異なります。
そのオブジェクトが実際にサブクラスオブジェクトである場合
iOS の self キーワードには多くの意味と規則がありますが、それがどのクラスのオブジェクトを参照するかを意味するものではありません。まず、この問題を修正してください。 Self は現在のクラスのオブジェクトを表し、質問で示されている図は、現在のクラスとすべての親の場合に [self class] を呼び出していると理解できます。クラスがこのメソッドをオーバーライドしていない場合、NSObject のクラス メソッドが呼び出されます。
さらに、OC の self キーワードは、スコープごとに異なる意味と機能を持ちます。インスタンス メソッドでは、self はオブジェクトの最初のアドレスを表しますが、クラス メソッドでは、self は現在のクラスを表します。OC では、Class もオブジェクトなので、self は異なります。
そのオブジェクトが実際にサブクラスオブジェクトである場合