2012-02-22 116 views

回答

27

你也可以这样声明。

@property (assign) BOOL locationUseBool; 

基本上,如果你说的非原子,而你使用@synthesize,然后如果多个线程试图一次更改/读取属性生成的访问器,不良可能发生。您可以获得部分写入的值或过度释放/保留的对象

在多线程程序中,原子操作不能部分通过,而非原子操作可以。

25
@property (nonatomic, assign) BOOL locationUseBool; 

没有星号,没有副本,没有保留。

+1

或者您可以完全省略第二个参数(默认为分配)。 – Alexander 2012-02-22 10:46:27

+0

为了代码清晰,我不会推荐它。 – Sulthan 2012-02-22 10:57:24

+0

也可以考虑使用官方的C99'bool'类型。它有更好的行为,当铸造等。 – JeremyP 2012-02-22 11:51:47

1

这一个为我工作。

@property (nonatomic) BOOL locationUseBool; 

属性声明中没有星号*符号。另外,使用'assign'是可选的。