如何将对象复制到ivars中供以后使用?

时间:2010-02-15 16:34:32

标签: objective-c xcode oop pointers

目标c | xcode | iphone问题

我为货币交易构建模型(数据)类,并且有关于指针和对象复制的基本/菜单问题。我正在创建的Transaction类包含4或5个表示对象类型变量的ivars / properties。现在当我从视图控制器输入数据以填充这些ivars时,使用指针是否安全,或者我是否需要复制该对象然后将其分配给ivar?

因为我需要在用户退出程序后存储这些事务,所以我假设我在前一个会话中对指针的任何引用都将基本上是断开的链接。我错在这里,任何解释,也许一些代码示例将不胜感激。

如果您对应用程序未使用时如何存储数据有任何建议,那么也会有所帮助。

非常感谢,

尼克

1 个答案:

答案 0 :(得分:1)

我建议重新阅读介绍指南,因为你似乎有点偏离轨道;过度思考基础知识。没什么大不了的,我们都去过那里(经常在遇到新东西时仍然存在!)。

首先,对于任何字符串值,复制它。在您应该使用的属性方面,您需要:

@property(copy) NSString *myString;

确保-release方法中的myString -dealloc

对于其他类型的值,它实际上取决于上下文。复制通常是安全的途径。 NSDateNSNumber实例恰好是不可变的,因此副本无关紧要,但是是免费的。

就保存数据而言,您是半正确的。在与您的应用程序运行会话时,指针不会保持有效/相同。如果需要保存数据,可以通过许多常用机制明确地这样做。对于完全不基于文档,特定于应用程序的角色中的死简单数据,用户默认值可能就足够了。否则,请参阅有关存档数据的文档。