を混乱させる私はアーカイブデータにアップ勉強して、そして私はしかし、私はNSMutableArray
をアーカイブする、標準のコレクションクラスは、簡単にアーカイブを提供実現「です」。だから、NSMutableArray
が "NSArray
"なので、それはサブクラスなので、これはうまくいきます。サブクラスは、クラスが私に
しかし、そのアイデアの切り株私、そして私は、私は、私はそれが権利を取得確認する、これはObjective-Cの基本的な考え方であると認識。
あなたはサブクラスを持つクラス「自動車」があるとし、「ジープを。」ジープは、自動車のサブクラスであるので...
automobileInstance=jeepInstance;
:今以上に基づいて、あなたはこれを言うことができます。
しかし、これは私には逆のようです。
ジープ=自動
すべてのジープが自動車「である」、すべてではない自動車はジープされているため、後:私はあなたの代わりに、サブクラスのインスタンスは、スーパークラスのインスタンスと等しくなることができると言うべきだと思います。
は、なぜあなたはこれを行うことができます。NSArray*newArray=nsmutableArrayInstance;
それは同じ考えだと言って:
automobile=jeep;
私の例では。
例えば、あなたのサブクラスには多くの新しいインスタンス変数が追加されているかもしれませんが、スーパークラスと同じに設定した場合、それらのiVarsは "失われています"、または少なくともスーパークラスは認識しません本当にオブジェクトをキャプチャするように見えます。
スーパークラス内のすべてのサブクラスであるため、sublass instance = superclass instance
は、理にかなっていると言って、他の道を行きます。サブクラスにあるがスーパークラスにない余分なiVarsの値を取得しないだけで、デフォルトのゼロに設定されるかもしれませんが、少なくともそれらは存在します。
Objective-Cは、英語の文構造に従いません。 –
車の駐車場があると考えてください。ジープはそこに行くことができ、ジープは自動車です。あなたがジープのために特別に駐車場所を持っていた場合でも、あなたはちょうどあなた可能性、それに古いランダム自動車を貼り付けできませんでしたか?それはジープではないかもしれない。今、自動車*のauto'は(技術的には、ポインタ自動車に、しかしEH)自動車を置く場所を宣言 'ことを検討してください。もし駐車場があれば。 – cHao