什么时候使用@property?

时间:2012-05-08 21:39:03

标签: objective-c performance properties

是否应该对可以经常访问的变量使用@property,例如粒子的位置? @property为变量创建getter和setter,这增加了调用方法的开销。在大多数情况下,这是不明显的,但如果该属性每秒访问一百万次(在不同的实例中)会怎么样?

3 个答案:

答案 0 :(得分:4)

您是正确的,Objective-C运行时将为@property访问器增加一定的开销。但是,这是在Objective-C类之间共享信息的可接受方式。如果您已经测量了应用程序并确定@property开销确实是一个处理瓶颈,那么您应该只考虑不同的方法。

请记住,现代处理器在 GHz 范围内运行,“每秒一百万次”发生的事情仅在 MHz 范围内。机会是,你的瓶颈将在其他地方。

如果您有问题,您可以随时在较大的Objective-C Particle类内的简单ParticleCloud结构数组上进行粒子处理。这将允许程序的其余部分忽略Particle个对象的确切实现,同时不再需要@property个访问者。

答案 1 :(得分:1)

你实际上是在使用吸气剂和二传手吗?如果没有,请不要使用财产。如果是这样,请使用它。了解开销是否显着的唯一方法是进行自己的性能测试并记录流程前后的时间,运行完全相同的模拟并比较经过的时间。如果它受到性能影响,但可以忽略不计,请不要担心。你甚至可能发现@property比你正在使用的其他方法更快。

答案 2 :(得分:0)

在我看来,您应该使用@property来获取对象的属性。我知道这听起来很愚蠢,但是属性我指的是其他类可以访问的“公共”属性。如果只有你的类需要该属性,那么在实现中保持它是私有的,事情会更顺畅和清晰。

@property的一个好处是你可以指定你是否希望它们是只读的(即没有setter)。所以这真的是公共API的问题。