V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
UtopiaCHN
V2EX  ›  iDev

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

  •  
  •   UtopiaCHN · 2015-12-03 22:35:11 +08:00 · 1888 次点击
    这是一个创建于 3277 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2015-12-10 17:55:28 +08:00
    zapper
        1
    zapper  
       2015-12-04 11:12:52 +08:00   ❤️ 1
    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
        2
    UtopiaCHN  
    OP
       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
        3
    UtopiaCHN  
    OP
       2015-12-05 18:48:32 +08:00
    @zapper atomic 不是直接 return value 的吗
    zapper
        4
    zapper  
       2015-12-08 11:53:42 +08:00   ❤️ 1
    个人觉得应该从"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
        5
    zapper  
       2015-12-08 11:54:39 +08:00   ❤️ 1
    @UtopiaCHN 忘记 at 了……
    UtopiaCHN
        6
    UtopiaCHN  
    OP
       2015-12-10 17:55:28 +08:00
    @zapper 抱歉没有及时回复,非常感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:54 · PVG 21:54 · LAX 05:54 · JFK 08:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.