readwrite或assign,我用什么作为CGFloat的属性修饰符

时间:2013-06-27 19:31:14

标签: ios

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

3 个答案:

答案 0 :(得分:0)

你应该使用赋值给非对象属性 - 任何C类型,如int,float,double,enum,struct。

答案 1 :(得分:0)

readwriteassign不是互斥的,它们用于不同的目的。您可以在不指定的情况下声明它,并将其默认为readwriteassign,这几乎可以肯定是您想要的。

答案 2 :(得分:0)

readwritereadonly只是关于自动创建getter和setter方法的内容。 assign与内存管理有关。如果将属性设置为assign,则自动生成的setter看起来像这样:

@property (assign) int number;

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

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

AFAIK assign是所有属性的默认值,使用强等等覆盖。