Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c @property原子性的经验法则?_Objective C - Fatal编程技术网

Objective c @property原子性的经验法则?

Objective c @property原子性的经验法则?,objective-c,Objective C,在Objective-C(桌面或iPhone平台上)中何时应该使用非原子属性,而不是默认的原子属性,是否有一个好的经验法则?我理解其中的区别——原子性以牺牲性能为代价保证整个值——但我看到的大多数示例都使用非原子属性(并且不稳定),因此显然存在需要原子性的情况和不需要原子性的情况 有谁能给我一个简单的指南,告诉我什么时候应该使用原子属性,什么时候应该使用非原子属性?只要有可能,你应该选择非原子属性。通常,这意味着只能从单个线程设置/访问的属性,或者其访问受到某种高级同步保护的属性。需要注意的是,

在Objective-C(桌面或iPhone平台上)中何时应该使用非原子属性,而不是默认的原子属性,是否有一个好的经验法则?我理解其中的区别——原子性以牺牲性能为代价保证整个值——但我看到的大多数示例都使用非原子属性(并且不稳定),因此显然存在需要原子性的情况和不需要原子性的情况


有谁能给我一个简单的指南,告诉我什么时候应该使用原子属性,什么时候应该使用非原子属性?

只要有可能,你应该选择
非原子属性。通常,这意味着只能从单个线程设置/访问的属性,或者其访问受到某种高级同步保护的属性。需要注意的是,
原子的
属性访问不能保证线程安全。换句话说,依赖于
原子属性的值的算法本身必须是线程安全的,这样整个系统才能是线程安全的。考虑到这一点,在维护系统线程安全的同时,通常可以使属性
非原子。

您应该尽可能支持
非原子
。通常,这意味着只能从单个线程设置/访问的属性,或者其访问受到某种高级同步保护的属性。需要注意的是,
原子的
属性访问不能保证线程安全。换句话说,依赖于
原子属性的值的算法本身必须是线程安全的,这样整个系统才能是线程安全的。考虑到这一点,在维护系统线程安全的同时,通常可以使属性
非原子