也许这是一个愚蠢的问题。每次我做一个@property
我必须@synthesize
它。但这毫无意义,你唯一能做的就是@property(whatever) Type* property
就是要做@synthesize property
在实施文件中。那么为什么两者都需要呢?为什么编译器不自动生成 getter/setter 方法而无需我编写@synthesize property
.
在当前的生产编译器中,默认情况下没有@synthesize
-- 就是不执行任何操作,然后在未提供实现时发出警告。
@synthesize
在最新版本的 LLVM 2.0 编译器中是自动的。
@dynamic
不需要自己实现 setter/getter 时。@dynamic
在运行时动态提供实现时使用。那是,@dynamic foo;
结合@property <type> foo;
会导致编译器不警告如果你不提供-foo
and -setFoo:
执行。
请注意,您还可以使用@synthesize propertyName = instanceVariableName;
使用特定的、不同名称的实例变量作为后备存储。
@property
接口中的 getter/setter 方法声明非常简写。它还携带更多元数据(保留、分配等),编译器在执行过程中会利用这些元数据@synthesize
.
并且,一如既往,atomic
属性对于线程安全并没有真正的帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)