【发布时间】:2011-12-19 21:10:13
【问题描述】:
在我继承的代码中,我看到了以下内容:
@property (readonly) IBOutlet UIImageView * bgImage;
当我期望保留内存模型时:
@property (readonly, retain) IBOutlet UIImageView * bgImage;
我很困惑为什么第一个属性定义可以正常工作而不会引起问题。
此外,dealloc 中有一个 release,正如您所料:
-(void)dealloc
{
[_bgImage release];
[super dealloc];
}
如果有人能对此做出解释,我将不胜感激。我已经和最初的开发人员谈过了,他试图编写更简洁的代码,这就是为什么他在内存模型中省略了retain(似乎没有必要)。
我想知道 IBOutlet 是否基本上被视为 ivar IBOutlet 语句,因为它是只读的(没有要使用的 setter,因此默认分配内存模型没有区别)。
如果 IBOutlet 永远不会改变,那么使用没有内存模型的只读属性实际上是定义属性的更好方法吗?
【问题讨论】:
标签: objective-c cocoa-touch memory-management iboutlet