2010-04-28 15 views
1

我一直在研究一个iPhone项目,我们在代码中以编程方式创建所有用户界面。现在我要开始一个新的iPhone项目,并考虑使用Interface Builder来代替它,因为它被推荐给我,因为它是一个非常有用的工具,创建比在代码中编写所有内容更少的头痛,并且通常更快(关于开发时间)。iPhone:Interface Builder泄漏内存?

但是,由于之前使用Interface Builder和产生的内存泄漏问题,我的团队成员有一些担忧。因此,他们建议再次编写代码。我不知道这些担忧是从哪里来的,但也许有比我们更多经验的人可以对这个话题提供一些见解。

做一个简单的Google search实际上并没有提供任何信息来证明Interface Builder本身创建的内存泄漏有任何问题。

通过查看official documentation苹果我只看到这三样东西,我必须照顾:

@property (nonatomic, retain) IBOutlet UIUserInterfaceElementClass *anOutlet; 

“你应该那么无论合成相应的存取方法,或根据执行这些声明和(在iPhone OS中)在dealloc中释放相应的变量。“

- (void)viewDidUnload { 
    self.anOutlet = nil; 
    [super viewDidUnload]; 
} 

什么我错过了吗?

回答

4

当您通过Interface Builder分配IBOutlet时,默认情况下该对象由控制器保留(即使未使用保留明确设置属性)。因此,您需要释放所有网点,或者使用分配设置属性。

这是一个让大多数人感到困惑,并导致最常见的内存泄漏。特别是重复显示和删除的视图。

+0

谢谢马克。这正是我在Apple官方文档中找到的(请参阅上面我编辑的问题)。你是否对Interface Builder本身创建的内存泄漏有任何不好的经验。这意味着与该工具的东西是错误的,而不是我的代码? – znq 2010-04-28 14:56:59

+0

我从来没有见过这个工具本身,没有。我遇到的每一次内存泄漏都是由于我自己的错误。 – MarkPowell 2010-04-28 15:00:17