iOS:何时发布成员对象?

时间:2012-03-15 12:15:34

标签: ios memory-management

我何时必须释放.h文件中声明的并在我的.m文件viewdidload中分配的对象? Autorelease给我一个错误。我是否必须在

中发布它们
-(void)dealloc{

}

方法(如属性)?

THX

5 个答案:

答案 0 :(得分:4)

首先,添加[super dealloc],这很重要:

-(void)dealloc{
   [var1 release], var1 = nil;
   [var2 release], var2 = nil;
   [super dealloc];
}

其次,是的,您保留的实例变量必须由您手动释放。

答案 1 :(得分:2)

如果您正在使用ARC(最新版Xcode中的默认设置),则会自动插入保留/发布,您只需担心对象图(在需要使用时保留引用)对象,避免循环引用。)

如果没有,你是正确的dealloc是发布成员变量的正确位置。虽然专门针对viewDidLoad中创建的那些,但请记住,您的视图可能会在控制器的生命周期内多次加载/卸载,因此请考虑使用viewDidUnload来释放这些对象。

答案 2 :(得分:0)

如果您正在使用ARC(自动引用计数),则不会。那是自动完成的。如果您没有使用ARC,那么您可以在dealloc中手动执行此操作。请注意,新项目将自动使用ARC,如果您尝试releaseretainautorelease和对象,ARC会给您一个错误。

答案 3 :(得分:0)

是的,您通常会在dealloc中发布它们。但是如果它们是在viewDidLoad中创建的,那么您可能希望在nil中释放它们(并将ivar设置为viewDidUnload),特别是如果可以在当前状态下重新创建对象下次调用viewDidLoad时。

当然,如果您使用ARC,则无需在dealloc中明确发布您的ivars,因为ARC会生成dealloc实现,为您执行此操作。

答案 4 :(得分:0)

如果您想避免有关内存管理和内存泄漏的严重问题,您需要澄清有关对象分配和释放它们的疑问。试试这个链接http://iosdevelopertips.com/objective-c/memory-management.html