2010-09-13 99 views
7

如何获取已设置好所有属性的NSObject,然后将其复制到数组可以使用的另一个内存块中,以便我可以使用原始的一个?创建NSObject的副本

回答

7

总之,你没有。

如果你想把对象放在一个数组中然后创建一个新的对象, addObject:到阵列和alloc/init一个新的。

如果您问的是如何将某个对象复制到某个地方的某个随机malloc()区块 - 比如在一个阵列的中间 - 那么这是一个非常不同的问题。它在技术上可以做到,但基本上没有人这样做,因为框架和运行时不是为此设计的。

不知道更多关于您的具体需求,这是不可能进入更多的细节。

+0

这是一个线程,我开始tc帮助我,但没有帮助我所有的方式:http://stackoverflow.com/questions/3697072/well-using-nsxmlparser-the-values-inside-an- array-all-set-of-the-last-entry – Chris 2010-09-13 01:36:40

+0

好的 - 我明白你真正的问题是什么。 – bbum 2010-09-13 01:47:52

+0

现在我想到了这一切,但现在我正在泄漏一个日期对象。 – Chris 2010-09-13 01:59:29

7

制作对象的副本是通过发送copy消息来完成的。这只适用于实现NSCopying协议的类的实例。

阅读Implementing Copy以获得良好的概述。然后阅读Implementing NSCopying Considered Harmful了解更多背景信息。

+0

这并不回答这个问题;他希望将对象字节复制到数组中,然后重新使用原始数据。 – bbum 2010-09-13 01:43:53

+0

苹果链接不再工作 – AsifHabib 2014-11-10 07:33:51

+0

这确实回答了问题,因为OP没有针对“字节复制”。这似乎是[更新文档](https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/CopyFunctions.html#//apple_ref/doc/uid/20001149-CJBEJBHH)关于复制(这很奇怪,因为[最新版本](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/RevisionHistory.html)被认为早于此答案)。 – jkoreska 2015-01-31 22:24:18