释放@property保留@synthesize的所有内容?

时间:2011-01-05 17:47:29

标签: iphone objective-c ipad

我开始敲打我的应用程序,并且已经深入了解它运行良好,但我想我让一些东西运行有点狂野。

对于每个@property(非原子,保留),然后我创建一个@synthesize,因为我需要在dealloc方法中使用[variable release] - 这是正确的吗?

即使是IBOutlet?

3 个答案:

答案 0 :(得分:11)

是。您通过将对象设为retain属性来声明对象的所有权,这意味着您必须通过释放它来放弃所有权。

答案 1 :(得分:4)

此外,如果您保留IBOutlet,则应将其释放并在nil中将其设置为-viewDidUnload。这使得对象在移除视图时释放其出口,特别是在响应低内存警告时。通过在该方法中将ivar设置为nil,如果随后取消分配对象,则可以避免双重释放ivar的风险。

答案 2 :(得分:1)

是。如果您保留该财产,则您有责任将其释放。

  

声明的属性从根本上取代了访问器方法声明;在合成属性时,编译器仅创建任何缺少的访问器方法。没有与dealloc方法的直接交互 - 属性不会自动为您释放。

Declared Properties

通常,您将在dealloc方法中执行此操作。

- (void)dealloc {
    [property release];
    [super dealloc];
}