我不明白为什么仪器/泄漏告诉我,我的viewDidLoad中有内存泄漏。我确实在dealoc中释放了两个对象,并在viewDidUnload中将它们设置为nil。有人能给我一个线索吗?为什么我在这里有内存泄漏?
链接到屏幕转储从仪器:http://i26.tinypic.com/28227iw.png
BR //克里斯托弗
我不明白为什么仪器/泄漏告诉我,我的viewDidLoad中有内存泄漏。我确实在dealoc中释放了两个对象,并在viewDidUnload中将它们设置为nil。有人能给我一个线索吗?为什么我在这里有内存泄漏?
链接到屏幕转储从仪器:http://i26.tinypic.com/28227iw.png
BR //克里斯托弗
我做dealoc释放这两个对象,并将其设置为nil在viewDidUnload
我可能误解句子的语法,但是 您应该发布和设置为零在均为 dealloc和viewDidUnload。
作为一般规则,您应该始终释放并设置为nil作为一对,除非您有特定的原因不要。
更不用说,仅仅释放一个对象而没有将它的引用设置为零是非常危险的。 – Costique 2010-07-20 10:17:30
感谢您的回复。我看到您指出并修正了代码中的错误/缺陷。但结果是一样的。那么如果你想在每次视图加载时初始化类对象,应该如何实现呢? – Christofffer 2010-07-20 11:40:44
你应该在viewUnload中释放它们并在视图中创建它们加载 – Akusete 2010-07-20 11:53:41
我不知道Instrumens是否具有这样的智能,但if语句只包含listOfItems而不包含paymentMethods。是否有可能listOfItems为空,但不是Paymentmethods?如果是的话,这将是一个泄漏,但如前所述,我不确定仪器分析是否也是这样。 – HerrVoennchen 2010-07-20 10:07:29
这是答案。如果paymentMethods不为零且listOfItems为零,则只需覆盖paymentMethods的值并丢失对该数组的引用。因此,泄漏。 – Costique 2010-07-20 10:20:51
是的,这是正确的。另外,if语句是多余的。您可以发送释放消息。如果它已经为零,则发送一条消息给零,并且不会发生任何事情。 – Rengers 2010-07-20 10:42:37