我正在学习iOS开发,我不太了解内存管理,
我已阅读苹果开发中心的高级内存管理编程指南指南,但仍有疑问。我想知道的最重要的问题是:在定义类的属性时,copy
和retain
之间的区别是什么?谢谢!
答案 0 :(得分:1)
对此有一千个答案!但是,要首先要理解的是,当您定义@property
时,您正在向应用程序的编译器和retain
/ copy
(以及您看到的所有其他内容)发出指令在括号中)是编译器关于如何遵循该指令的指令。
@property
本质上意味着 - 请编译先生,给我一些访问方法(getter& setters)。
所以,retain
& copy
是编译器的指令,告诉它如何在这些getter / setter访问器内操作。
copy
表示 - 当我说[myClass setMyProperty:propertyReference]
时 - 我希望班级制作该物业的副本。一个完整的新属性实例。因此,课堂内的副本不会受到课外的外部诡计的影响。
retain
表示 - 我希望该类记住我正在设置的属性的确切实例。根本不是新的实例。在这种情况下,当该实例发生更改时,您的类将知道该属性的最新状态。