我一直在疯狂地阅读各种属性修饰符。我知道 assign 的行为类似于 unsafe_unretained,但是对于 CGFloat 的标准读写属性,我将使用什么?读写(默认)似乎很明显,但我什么时候使用分配?
问问题
1388 次
3 回答
0
您应该使用分配给非对象属性 - 任何 C 类型,如 int、float、double、enum、struct。
于 2013-06-27T19:35:14.143 回答
0
readwrite
并且assign
不是相互排斥的,它们服务于不同的目的。您可能只声明它而不指定任何一个,并让它默认为readwrite
and 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 回答