1)创建IBOutlet时,视图控制器会自动保留此插座。
1a)当你没有创建一个插座时,'framework'(nib?)会为你释放你的对象(比如uilabels或uiviews)。
2)当你做self.myOutlet = nil时,你有效地释放了一个插座(前提是你已经正确地合成了你的属性)。这是因为设定者释放出口并将其分配给零。
我不知道的是:
1)主要问题:如果你在viewDidUnLoad中做self.myOutlet = nil,你还需要在dealloc中做任何事吗?你能否假设viewDidUnload总是在dealloc之前调用?(因此你的保留视图被释放了?)
2)如果您没有合成该商店的房产,会发生什么?框架不应该自动释放吗?(因为你没有retain属性)如果你必须释放它,你是如何做到的以及在哪里(在viewDidUnload或dealloc中)?
如果有任何问题,请指出给我。任何澄清都会非常有用。
答案 0 :(得分:1)
(#1)Apple医生说要同时做这两件事
另外,由于UIViewController中dealloc的实现细节,你还应该在dealloc中将出口变量设置为nil:
(#2)如果你没有合成一个属性,你仍然需要创建一个属性,并且最好保留 - 阅读链接。创建UI对象,自动释放并设置outlet属性(应该保留)。没有为你发布的版本,因为他们已经完成了他们应该做的发布 - 你保留了,所以你必须发布(在viewDidUnload和dealloc中)