2009-07-18 39 views
0

他们说:我必须在 - (void)viewDidUnload中释放IBOutlets吗?

//释放任何保留的 主视图子视图。 //例如self.myOutlet = 无;

我以前从没见过。所以我想知道他们是否在这里谈论笔尖?

+0

类似的,如果不相同,问题:http://stackoverflow.com/questions/382576/do-i-need-to-release-iboutlets-when-using-loadnibnamed-method – titaniumdecoy 2009-07-18 21:42:22

回答

1

你不必如果有理由保持它,但假设你需要通过插座访问实体点,如果视图已被拆除,那么你应该释放。否则,即使笔尖本身已被卸载,但您的视图控制器仍将对所有来自笔尖的IBOutlet进行保留,从而防止它们被交易。由于这些对象可能具有纹理并支持它们,并且iPhone使用主内存视频,因此很快就会浪费大量内存。

此外,如果再次调用viewDidLoad,那么当笔尖重新加载时,将创建一个新对象并将其指定给该出口,因此,如果您在其他任何位置使用该对象(将其他对象中的属性设置为该对象指向的对象) IBOutlet),那么你的应用可能会处于不一致的状态。

2

类似于您在init中分配的任何东西应该在dealloc中未分配。

如果您在viewDidLoad中分配了内存,则应该在viewDidUnload中释放它。

当您将nib文件带入图片时,问题会变得混乱。如果手动加载nib文件,则应手动卸载它并将所有IBOutlets设置为零。

相关问题