@property assign

3
如果“assign”是默认值,我可以将其留空,它会自动分配吗?
@property BOOL sample;

如果我定义了它的原子性然后留空会怎么样?

@property (nonatomic) BOOL sample;

1
在XCode 4.3中,{strong}是默认设置,为了保持ARC的一致性而进行了更改。请参见此处https://dev59.com/hWkw5IYBdhLWcg3wmryH - Daddy
但是它将“strong”赋予了我的基元?这是不可能的。 - Will Larche
1
对于可保留对象指针类型的属性,如果没有拥有权源,则在已存在相关实例变量的情况下,将合成该属性的所有权;否则,在[Apple 3.1开始,LLVM 3.1]其所有权会默认为强引用。在此修订之前,合成此类属性是不规范的。 - Daddy
@JustinAmberson 把那个变成一个答案,这样我就可以接受并给你信用了! - Will Larche
1
@JustinAmberson 这可能对于对象指针是正确的,但对于基本数据类型则不然。基本数据类型无法被保留或释放。所有基本数据类型的默认值都是“assign”。 - Itai Ferber
2个回答

6

如果没有特别指定,将使用默认设置。然而,在属性定义中明确表述是一个好的习惯。这样第三方更容易理解正在进行的事情,并且知道应该发生什么。此外,实现细节在未来可能会发生变化。


在 XCode 4.3 中,{strong} 是属性的默认值。 - Daddy

3
是的,您是正确的:
@property BOOL sample;

是相当于:

@property (atomic, assign) BOOL sample;

当然,"atomic"并不是一个存在的属性,请不要使用它 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接