Ich studiere Daten archivieren, und ich erkenne die Standard-Sammlung Klassen bieten einfache Archivierung, aber ich möchte eine NSMutableArray
archivieren. Also ich lese das seit NSMutableArray
"ist ein" weil es eine Unterklasse ist, dann ist das in Ordnung.Unterklasse "ist" Klasse verwirrt mich
Aber diese Idee stopft mich, und mir ist klar, dies ist ein grundlegendes Konzept von Objective-C, also möchte ich sicherstellen, dass ich es richtig mache.
Angenommen, Sie haben eine Klasse "Automobil" mit einer Unterklasse "Jeep." Jetzt auf der Grundlage der oben genannten, können Sie sagen:
automobileInstance=jeepInstance;
... weil ein Jeep eine Unterklasse von Automobil ist.
Aber das scheint mir rückwärts. Ich würde denken, Sie sollten stattdessen sagen, dass eine Unterklasse Instanz in der übergeordneten Klasse Instanz gleich sein:
Jeep = auto
Denn schließlich einen Jeep „ist ein“ Automobil, aber nicht alle Autos sind Jeeps. So
warum dann können Sie dies tun:
NSArray*newArray=nsmutableArrayInstance;
Es ist die gleiche Idee mit den Worten:
automobile=jeep;
in meinem Beispiel.
Ihre Unterklasse hat vielleicht viele neue Instanzvariablen hinzugefügt, aber wenn Sie sie gleich einer Oberklasse setzen, sind diese iVars "verloren" oder zumindest die Superklasse erkennt sie nicht, also ist es nicht das Objekt wirklich zu erfassen, würde es scheinen.
Gehen Sie den anderen Weg, sagt die sublass instance = superclass instance
macht Sinn, da alles in der Oberklasse in der Unterklasse ist; Sie erhalten nur keine Werte für die zusätzlichen iVars, die sich in der Unterklasse, aber nicht in der Oberklasse befinden, sie können auf den Standardwert Null gesetzt werden, aber sie existieren zumindest.
Objective-C folgt nicht der Satzstruktur der englischen Sprache. –
Bedenken Sie, dass Sie einen Parkplatz für Autos haben. Ein Jeep kann dorthin fahren, weil ein Jeep ein Automobil ist. Aber wenn du einen Parkplatz speziell für Jeeps hättest, könntest du nicht irgendein altes Auto darin stecken, oder? Es könnte kein Jeep sein. Jetzt bedenken Sie, dass "Automobile auto" einen Platz für Automobile (technisch, Zeiger auf Automobile, aber eh) erklärt. Ein Parkplatz, wenn du willst. – cHao