1

当我在 iOS 中为应用程序创建属性时,我应该什么时候使用“assign”?我什么时候应该使用“保留”?

一个比另一个有什么好处吗?

4

2 回答 2

7

赋值通常用于原始类型,编译器将创建设置器,以便完成的所有操作都是简单的赋值操作。

而使用 'retain'(现在使用 ARC 称为“strong”)限定符在属性上设置值会导致您的支持实例变量获取(换句话说,保留)已设置对象的所有权。

对于对象,如果您不想像描述的那样获得所有权并且您正在使用 ARC,那么您很可能希望使用“弱”限定符而不是“分配”。

于 2013-10-21T13:55:46.577 回答
3

如果您使用 ARC,则不需要使用保留,因为您没有手动管理内存。

Retain:如果您不使用 ARC,则需要手动管理应用程序的内存。在这种情况下,如果您对一个变量使用保留,您将计数加一。然后,计数需要达到 0 才能被释放。

赋值:调用赋值属性的getter时,返回对实际数据的引用。通常,当您拥有原始类型的属性时,您会使用此属性。

强:替换保留属性,作为 Objective-C 自动引用计数 (ARC) 的一部分。在非 ARC 代码中,它只是保留的同义词。您用于要保留参考的对象。另一方面,我们有弱点:

@property (nonatomic, strong) UIColor *myColor
@property (nonatomic, assign) BOOL myBOOL

无论如何,这个链接真的很有用,而且比这里解释得更好。 Objective-C 声明的@property 属性(非原子、复制、强、弱)

于 2013-10-21T13:56:41.393 回答