嘿,伙计们,再次击败内存管理(死)马抱歉。我知道这个问题已经在SO上多次提出过,但我觉得所有的问题仍然缺乏两条信息。让我提出一些我知道为了挽救每个人的时间。内存管理与视图控制器中的插座和属性
1)当您创建IBOutlet时,您的视图控制器会自动保留此插座。 1a)当你不创建插座时,'框架'(笔尖?)为你释放你的对象(如uilabels或uiviews)。 2)当你做self.myOutlet = nil时,你可以有效地释放出口(假定你正确地合成了你的属性)。这是因为setter释放插座并将其分配给nil。
我不知道是什么:
1)主要问题:如果你做self.myOutlet =零在viewDidUnLoad,你仍然需要做的dealloc在什么?你可以假设viewDidUnload总是在dealloc之前调用吗?(因此你的保留视图被释放?)
2)如果你没有合成该插座的属性,会发生什么?该框架不应该自动释放它吗?(因为你没有retain属性)如果你必须释放它,你怎么做它以及在哪里(在viewDidUnload或dealloc中)?
如果有什么不对,请告诉我。任何澄清都是非常有帮助的。
hi lou,谢谢你的回复: – Ying 2010-09-09 12:50:48
hi lou,感谢您的回应:我很困惑,因为关于在dealloc中将outlet变量设置为零的引用在本节中是这样说的: “注意:在3.0之前的iOS中...您应该在setView:中将网点设置为零在这个例子中举例说明:“ 然后它说,就像你上面引用的那样,”另外....“那么这是不是iOS 3.0前的细节的一部分? 所以我从这里拿走了,当你有一个保留的属性,在viewDidUnload和dealloc期间,你必须做self.outlet = nil,没有其他东西来正确管理属性。没有物业没有物业。这是正确的吗? – Ying 2010-09-09 13:01:46
我对该说明的阅读是,只有setView部分适用于iOS 3.0,因为viewDidUnload不存在。第二部分是针对每个版本的。是的,为IBOutlets使用@property。 – 2010-09-09 20:33:35