cocoa - 在 cocoa 中保留信息?

标签 cocoa memory-management retain

我对Cocoa还是个新手,对内存管理不太了解。我阅读了苹果的文档,但仍然感到困惑。我的问题是,如果我在 - (void)dowhatever 中设置变量的值,当 dowhatever 结束时,变量的内容会被删除吗?如果是这样,是否有一种方法(无需写入文件)可以用来保留变量内容?

感谢您的帮助

最佳答案

My question is if I set the value of a variable in a - (void)dowhatever when the void ends, …

void 是一种类型。它没有开始,也没有结束。

具体来说,它是 dowhatever 方法的返回类型。如果 dowhatever 返回一个值,则该返回值的类型将是 void 所在的位置;例如,它会显示 - (NSUInteger) doWhatever。那里有 void 意味着该方法不返回值。

另请参阅Objective-C 2.0 Programming Language文档。

… will the contents of the variable be erased?

如果是局部变量,那么当方法返回时该变量将不再存在。

只要该变量所属的实例(对象)存在,实例变量就存在,即直到该实例被释放为止。

Objective-C 文档中还介绍了实例变量。

If so is there a method (without writing to a file) that I can use to retain the variable contents?

如果您只是需要将对象返回给调用者,请保留它并自动释放它。请参阅Memory Management Programming Guide for Cocoa了解更多信息。

如果这不是您正在做的事情,那么问题就变成了为什么您需要该对象保持事件状态。

从对象的角度思考:一个对象可能拥有某些其他对象,并且它拥有的每个对象都有一个实例变量*。只要您明确所有权并在代码中维护它们,对象的生命周期就可以发挥作用。

如果对象 A 需要另一个对象 B,那么 A 应该拥有 B。这种所有权不是排他性的;它可以共同拥有 B。但它需要至少共同拥有 B;只要 B 至少有一个所有者,它就会一直存在。

内存管理指南中也对此进行了介绍。有关对象之间关系的其他示例,您应该翻阅 Cocoa Fundamentals Guide ,特别是关于 Cocoa's design patterns 的章节,您可能想查看 sample code查看这些模式在实践中的演示。

*它还可以拥有不属于它的对象的实例变量,例如委托(delegate)。您可以为不属于您的对象拥有一个实例变量,但如果您确实拥有它,则应该为它拥有一个实例变量。

关于cocoa - 在 cocoa 中保留信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659882/

相关文章:

asp.net - 如何确定 session 变量的内存占用量?

ios - 确保在ARC中重新分配

ios - 保留属性(property)被重新分配

objective-c - 如何使用 Objective-C 获取应用程序的详细信息?

objective-c - 如何在 cocoa 中将基于单元格的表格转换为基于 View 的表格?

objective-c - 如何在循环中动态构建这样的 C 数组,返回它并保留引用?

objective-c - stringByAppendingString 和保留困境

ios - 内存管理,要弄清楚

objective-c - 如何在多种方法中冒泡错误对象?

cocoa - 捕获一个 View 并输出到另一个 View