-5

我一直在疯狂地阅读各种属性修饰符。我知道 assign 的行为类似于 unsafe_unretained,但是对于 CGFloat 的标准读写属性,我将使用什么?读写(默认)似乎很明显,但我什么时候使用分配?

4

3 回答 3

0

您应该使用分配给非对象属性 - 任何 C 类型,如 int、float、double、enum、struct。

于 2013-06-27T19:35:14.143 回答
0

readwrite并且assign不是相互排斥的,它们服务于不同的目的。您可能只声明它而不指定任何一个,并让它默认为readwriteand assign,这几乎肯定是您想要的。

于 2013-06-27T19:37:32.527 回答
0

readwrite并且readonly只是自动创建的 getter 和 setter 方法。assign与内存管理有关。如果将属性设置为assign,则自动生成的 setter 如下所示:

@property (assign) int number;

- (void)setNumber:(int)newNumber
{
    number = newNumber;
}

我不确定 ARC 的情况如何,但是NSString使用 assign 设置对象指针(例如 )会导致内存泄漏(ivar 的原始值在其指针设置为新值之前未释放)。

AFAIKassign是所有属性的默认值,通过使用 strong 等覆盖。

于 2013-06-27T19:41:19.720 回答