代码之家  ›  专栏  ›  技术社区  ›  fuzzygoat

@int类型的属性?

  •  17
  • fuzzygoat  · 技术社区  · 14 年前

    只是一个简单的问题,如果可以的话,我一直(自从学习obj-c)写int属性如下。。。

    @property(nonatomic, assign) int myValue;
    

    我现在认为这可能是过度杀戮,我不妨写。。。

    @property int myValue;
    

    只是好奇,我知道“assign”是默认行为,“non-tomic”可以稍微快一点。。。

    加里

    3 回复  |  直到 14 年前
        1
  •  8
  •   walkytalky    14 年前

    好吧,声明原子性的问题与是否显式声明默认属性是一个独立的问题。前者将取决于代码的性质——是否有可能对属性进行有争议的多线程访问?

    关于后者,这主要是一个风格问题,但总的来说,我认为你应该在明确的方面犯错误。输入这些额外的几次击键到底需要多少秒?

        2
  •  36
  •   JeremyP    14 年前
    @property(nonatomic, assign) int myValue;
    

    @property int myValue;
    

    atomic ). 所以第二个例子是原子属性。对于基元类型的属性,我不知道是否发生了任何锁定,但可能会引入内存写屏障(即setter将强制将值写回主内存,而不仅仅是缓存)。因此,原子性质比非原子性质慢得多。然而,作为程序总执行时间的一小部分,它们仍然可以代表非常小的百分比。在你分析你的代码之前你不会知道。

        3
  •  2
  •   jv42    14 年前

    非原子生成的代码更少,而且速度稍快。不过,我同意这很冗长。