【发布时间】:2011-04-10 00:25:52
【问题描述】:
大家好,很抱歉再次击败内存管理(死)马。我知道这个问题已经在 SO 上被问过好几次了,但我觉得那里的所有线程仍然缺少两条信息。让我提出我所知道的以节省大家一些时间。
1) 当你创建一个 IBOutlet 时,你的视图控制器会自动保留这个出口。
1a) 当您不创建插座时,“框架”(笔尖?)会为您释放您的对象(如 uilabels 或 uiviews)。
2) 当你执行 self.myOutlet = nil 时,你有效地释放了一个出口(前提是你已经正确地合成了你的属性)。这是因为 setter 释放了 outlet 并将其分配给 nil。
我不知道的:
1) 主要问题:如果您在 viewDidUnLoad 中执行 self.myOutlet = nil,您还需要在 dealloc 中执行任何操作吗?你能假设 viewDidUnload 总是在 dealloc 之前调用吗?(因此你保留的视图被释放了?)
2) 如果你不为那个插座合成一个属性,会发生什么?框架不应该自动释放它吗?(因为你没有保留属性)如果你必须释放它,你怎么做以及在哪里(在viewDidUnload或dealloc中)?
如果有什么问题,请指出来。任何澄清都会非常有帮助。
【问题讨论】:
标签: iphone cocoa-touch memory-management