我还是 Cocoa 的新手,对内存管理知之甚少。我阅读了 Apple 的文档,但我仍然感到困惑。我的问题是,如果我在结束- (void)dowhatever
时设置变量的值,变量dowhatever
的内容会被删除吗?如果是这样,是否有一种方法(不写入文件)可以用来保留变量内容?
谢谢你的帮助
我还是 Cocoa 的新手,对内存管理知之甚少。我阅读了 Apple 的文档,但我仍然感到困惑。我的问题是,如果我在结束- (void)dowhatever
时设置变量的值,变量dowhatever
的内容会被删除吗?如果是这样,是否有一种方法(不写入文件)可以用来保留变量内容?
谢谢你的帮助
- (void)dowhatever
我的问题是,如果我在 void 结束时 设置变量的值,...</p>
void
是一种类型。它没有开始也没有结束。
具体来说,它是dowhatever
方法的返回类型。如果dowhatever
返回一个值,则该返回值的类型将是您拥有的位置void
;例如,它会说- (NSUInteger) doWhatever
。在void
那里意味着该方法不返回值。
另请参阅Objective-C 2.0 编程语言文档。
... 变量的内容会被删除吗?
如果它是一个局部变量,那么当方法返回时该变量将不复存在。
只要变量所属的实例(对象)存在,实例变量就存在——也就是说,直到实例被释放。
实例变量也包含在 Objective-C 文档中。
如果是这样,是否有一种方法(不写入文件)可以用来保留变量内容?
如果您只是需要将对象返回给调用者,请保留它并自动释放它。有关更多信息,请参阅Cocoa 的内存管理编程指南。
如果那不是您正在做的事情,那么问题就变成了为什么您需要对象保持活力。
从对象的角度思考:一个对象可能拥有某些其他对象,并且它拥有的每个对象都有一个实例变量*。只要您拥有正确的所有权并在代码中维护它们,对象的生命周期就可以正常工作。
如果对象 A 需要另一个对象 B,则 A 应该拥有 B。这种所有权不是独占的;它可以共同拥有B。但它至少需要共同拥有B;只要 B 至少有一个所有者,它就会一直存在。
这也包含在内存管理指南中。对于对象之间关系的其他示例,您应该翻阅Cocoa Fundamentals Guide ,尤其是有关Cocoa 设计模式的章节,并且您可能希望查看示例代码以查看在实践中演示的那些模式。
*它还可以为它不拥有的对象(例如委托)提供实例变量。您可以为不属于您的对象创建一个实例变量,但如果您确实拥有它,则应该为它创建一个实例变量。