我需要在dealloc中发布IBOutlets吗?

jow*_*wie 1 memory-leaks objective-c uiviewcontroller ios

我有一个View Controller作为带有两个IBOutlets的导航控制器堆栈的一部分.在viewDidUnload中我释放它们:

- (void)viewDidUnload
{
    self.myView1 = nil;
    self.myView2 = nil;
    [super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)

但我还是有泄漏.所以我也在dealloc中为他们发布了释放消息:

- (void)dealloc
{
    [myView1 release];
    [myView2 release];

    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

这似乎可以清除内存泄漏.但是,我总是被告知我应该发布使用alloc,copy或new创建的ivars.所以我担心这两个版本就在这里.这是对还是错?有人可以向我解释一下,因为我不断收到相互矛盾的意见......谢谢!

Bol*_*ock 8

如果你的任何@property物体声明retain或者copy,你需要释放他们dealloc.这包括您的网点.

  • 谢谢.我听说过"分配,复制或保留"的规则,但并未真正考虑到XIB在加载时保留它的事实.我会尝试在我的脑海中蚀刻这个! (2认同)