iPhone:界面生成器泄漏内存?

iPhone:界面生成器泄漏内存?,iphone,memory-leaks,interface-builder,Iphone,Memory Leaks,Interface Builder,我一直在做一个iPhone项目,我们用代码以编程方式创建了所有的用户界面。现在,我要开始一个新的iPhone项目,并考虑改用Interface Builder,因为它被推荐为一个非常有用的工具,比用代码编写任何东西都要省力,而且通常要快得多(关于开发时间) 然而,我的团队成员有一些担心,因为以前使用Interface Builder时出现问题,并导致内存泄漏。因此,他们建议重新构建代码中的所有内容。我不知道这些担忧是从哪里来的,但也许有比我们更有经验的人可以就这个话题给出一些见解 做一个简单的测

我一直在做一个iPhone项目,我们用代码以编程方式创建了所有的用户界面。现在,我要开始一个新的iPhone项目,并考虑改用Interface Builder,因为它被推荐为一个非常有用的工具,比用代码编写任何东西都要省力,而且通常要快得多(关于开发时间)

然而,我的团队成员有一些担心,因为以前使用Interface Builder时出现问题,并导致内存泄漏。因此,他们建议重新构建代码中的所有内容。我不知道这些担忧是从哪里来的,但也许有比我们更有经验的人可以就这个话题给出一些见解

做一个简单的测试并不能提供任何信息来证明Interface Builder本身造成的内存泄漏存在任何问题

通过观察苹果公司的产品,我只看到了我必须注意的三件事:

@property (nonatomic, retain) IBOutlet UIUserInterfaceElementClass *anOutlet;
然后,您应该综合相应的访问器方法,或者根据声明实现它们,然后(在iPhone操作系统中)在dealloc中释放相应的变量


我遗漏了什么?

当您通过Interface Builder分配IBOutlet时,默认情况下控制器会保留该对象(即使没有使用retain显式设置属性)。因此,您需要释放所有插座,或使用assign设置属性


这是一个让大多数人头疼的问题,并导致了最常见的内存泄漏。尤其是在重复显示和删除的视图上。

当您通过Interface Builder分配IBOutlet时,默认情况下控制器会保留该对象(即使没有使用retain显式设置属性)。因此,您需要释放所有插座,或使用assign设置属性


这是一个让大多数人头疼的问题,并导致了最常见的内存泄漏。尤其是重复显示和删除的视图。

谢谢标记。这也是我在苹果官方文档中发现的(见我上面编辑的问题)。对于Interface Builder本身造成的内存泄漏,您是否有过不好的经验。这意味着该工具的某些部分出错,而不是我的代码出错?我从未见过该工具本身有任何问题,没有。我遇到的所有内存泄漏都是由于我自己的错误。谢谢Mark。这也是我在苹果官方文档中发现的(见我上面编辑的问题)。对于Interface Builder本身造成的内存泄漏,您是否有过不好的经验。这意味着该工具的某些部分是错误的,而不是我的代码?我从来没有见过该工具本身的任何东西,没有。我遇到的每一个内存泄漏都是由于我自己的错误。
- (void)viewDidUnload {
    self.anOutlet = nil;
    [super viewDidUnload];
}