如果我有一个@property
我不想通过ivar
我支持的,我只是省略了@synthesize
并且有手动的getter,它返回了一个计算值.
但是,现在自Xcode 4.4以来我没有指定@synthesize
do编译器会自动生成它.这是否意味着它还会生成一个ivar
我不需要/使用它的偶数?
我最终可以通过使用强制不自动合成dynamic
.然而,这将是错误的,因为@dynamic
如果getter和setter在其他地方或运行时实现,则应该用于关闭警告.
Jef*_*mas 36
在我的工作中,我注意到以下行为.
@synthesize
,有一个getter而且没有setter,那么它将生成iVar.@synthesize
,没有getter,并且有一个setter,那么它将生成iVar.@synthesize
并且同时拥有getter和setter,那么它将不会生成iVar.@synthesize
和没有getter,那么它将生成iVar.@synthesize
和getter,那么它将不会生成iVar.从这一点来看,我认为一般规则是如果你没有a @synthesize
,并且拥有完全实现该属性所需的所有方法,那么它被认为是动态的并且不生成iVar.
无论如何,如果你想确保没有生成iVar,那么将其声明为@dynamic
.
关于@dynamic的澄清
您可以使用@dynamic关键字告诉编译器您将通过直接提供方法实现或在运行时使用其他机制(如动态加载代码或动态方法解析)来履行属性隐含的API契约.
对我来说,即使您直接实现getter和setter,也可以将属性标记为@dynamic.
归档时间: |
|
查看次数: |
4429 次 |
最近记录: |