如何在目标C类中设置布尔类型属性

Fir*_*ous 23 boolean properties objective-c ios ios5

如何在目标C类中使用布尔属性,我这样做:

@property (nonatomic, copy) BOOL *locationUseBool;
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

具有'copy'属性的属性必须是对象类型.

宣告的正确方法是什么?

Kam*_*war 27

你也可以这样宣布.

@property (assign) BOOL locationUseBool;
Run Code Online (Sandbox Code Playgroud)

基本上,如果你说非原子,并使用@synthesize生成访问器,那么如果多个线程试图立即更改/读取属性,则可能发生错误.您可以获得部分写入的值或过度释放/保留的对象

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


bne*_*ely 25

@property (nonatomic, assign) BOOL locationUseBool;
Run Code Online (Sandbox Code Playgroud)

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

  • @Yar:`BOOL`只是`char`的typedef.`bool`是一个合适的布尔类型,逻辑上是1位宽.在C中,任何数量的非0的整数类型都要评估为true.但是,将低8位碰巧为零的任何非零整数转换为"BOOL"将导致BOOL变量为false.`(BOOL)0x1000`为false但`(bool)0x1000`为真. (4认同)