“从获取器( getter)得到的返回值或者通过设置器( setter)设置的值可以一次完成。”这句话是什么意思?

2015-12-03 22:35:11 +08:00
 UtopiaCHN

这句话是描述 Objective-C 的 atomic 的。文章链接 http://blog.csdn.net/mars2639/article/details/7352540

1830 次点击
所在节点    iDev
6 条回复
zapper
2015-12-04 11:12:52 +08:00
nonatomic: It is not thread-safe. You can use the nonatomic property attribute to specify that synthesized accessors simply set or return a value directly, with no guarantees about what happens if that same value is accessed simultaneously from different threads. For this reason, it ’ s faster to access a nonatomic property than an atomic one.

atomic : It is the default behaviour. If an object is declared as atomic then it becomes thread-safe. Thread-safe means, at a time only one thread of a particular instance of that class can have the control over that object.

这句话是描述 nonatomic 的吧..?
UtopiaCHN
2015-12-05 18:44:28 +08:00
@zapper 是的,我写错了。“ You can use the nonatomic property attribute to specify that synthesized accessors simply set or return a value directly ” 这句话不是很理解啊
UtopiaCHN
2015-12-05 18:48:32 +08:00
@zapper atomic 不是直接 return value 的吗
zapper
2015-12-08 11:53:42 +08:00
个人觉得应该从"nonatomic: It is not thread-safe"理解这两个的区别。
http://stackoverflow.com/questions/588866/whats-the-difference-between-the-atomic-and-nonatomic-attributes
第二个回答中的代码片段看上去会比较好理解

atomic 是通过原子操作 set / return value 的,你在执行 getter / setter 之前会检查这个对象是否被其他线程占用。如果是,则会等待,既不能一次得到这个值。
nonatomic 直接 set / return value ,既是说如果声明为 nonatomic ,你在执行 getter / setter 消耗的时间中,你那个对象中的值可能已经变化掉了。虽然说他的速度会比 atomic 快,但是不是线程安全的。
zapper
2015-12-08 11:54:39 +08:00
@UtopiaCHN 忘记 at 了……
UtopiaCHN
2015-12-10 17:55:28 +08:00
@zapper 抱歉没有及时回复,非常感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/240989

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX