我是 Objective C 的新手。我有 C 的基础知识,包括指针的概念。我有两个基本问题:
- 有人可以用一些类比来解释分配、复制和保留之间的区别吗?
- 如何处理返回指针变量的函数,以及如何通过返回指针执行消息传递?
更改文档的更新答案
这些信息现在分布在文档中的多个指南中。以下是所需阅读的列表:
- 可可核心能力:申报财产
- 使用 Objective-C 编程:封装数据
- 过渡到 ARC 发行说明
- 高级内存管理编程指南
- Objective-C 运行时编程指南:声明的属性
现在这个问题的答案完全取决于您是否使用 ARC 管理的应用程序(新项目的现代默认设置)或强制手动内存管理。
分配与弱 - Use assign将属性的指针设置为对象的地址,而不保留它或以其他方式管理它;使用weak如果分配给它的对象被释放,则属性自动指向 nil。大多数情况下你会想要使用weak所以你不会尝试访问已释放的对象(非法访问内存地址 - ”EXC_BAD_ACCESS
") 如果您没有进行适当的清理。
保留与复制- 声明的属性使用retain默认情况下(因此您可以完全忽略它),并且无论另一个对象被分配给该属性还是将其设置为 nil,都会自动管理对象的引用计数;使用copy自动发送新分配的对象a-copy
消息(这将创建传递对象的副本,并将该副本分配给属性 - 在某些情况下很有用(甚至是必需的),在这些情况下,分配的对象在设置为其他对象的属性后可能会被修改(这意味着修改/突变也适用于该属性)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)