2010-09-13 11 views
7

Wie nehme ich ein NSObject, dass ich alle Attribute festgelegt habe und dann kopieren Sie das in einen anderen Speicherblock, den ein Array verwenden kann, so dass ich das Original wieder verwenden kann?Erstellen Sie eine Kopie eines NSObject

Antwort

7

Kurz gesagt, Sie nicht.

Wenn Sie das Objekt in ein Array einfügen und dann ein neues Objekt erstellen möchten, tun Sie genau das; addObject: zum Array und alloc/init ein neues.

Wenn Sie fragen, wie Sie ein Objekt in, sagen wir, eine zufällige malloc() Block irgendwo - sagen, in der Mitte eines Arrays - dann das ist ein ganz anderes Problem. Es kann technisch gemacht werden, aber im Grunde tut niemand so, wie die Frameworks und Laufzeit nicht dafür ausgelegt sind.

Ohne mehr über Ihre spezifischen Bedürfnisse zu wissen, ist es unmöglich, näher darauf einzugehen.

+0

Hier ist ein Thread, dass ich begann, dass tc mir geholfen hat, aber nicht half mir den ganzen Weg: http://stackoverflow.com/questions/3697072/well-using-nsxmlparser-the-values-inside-an- Array-sind-all-Set-to-the-last-Eintrag – Chris

+0

OK - Ich sehe, was Ihre wahre Frage ist. – bbum

+0

Ich habe es jetzt herausgefunden, aber jetzt lecke ich ein Date-Objekt. – Chris

7

Die Erstellung einer Kopie eines Objekts erfolgt durch Senden der Nachricht copy. Dies funktioniert nur bei Instanzen von Klassen, die das NSCopying-Protokoll implementieren.

Lesen Sie Implementing Copy für einen guten Überblick. Dann lesen Sie Implementing NSCopying Considered Harmful für weitere Hintergrundinformationen.

+0

Das beantwortet die Frage nicht; Er möchte das Objekt in ein Array kopieren und dann das Original wiederverwenden. – bbum

+0

Apple Link funktioniert nicht mehr – AsifHabib

+0

Dies beantwortet die Frage, da das OP nicht spezifisch für "Byte-Kopie" ist. Dies scheint die [aktualisierte Dokumentation] zu sein (https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/CopyFunctions.html#//apple_ref/doc/uid/20001149-CJBEJBHH) beim Kopieren (was merkwürdig ist, da die [letzte Version] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/RevisionHistory.html) angeblich älter ist als diese Antwort). – jkoreska

Verwandte Themen