我有一个UIViewController(称为它)与我已经保留和合成的NSDate实例。保留来自另一个对象的保留变量?
在另一种方法,我创建另一个UIViewController中(称为B),并希望通过它的NSDate实例。在B中,我将要使用它。我是否也应该保留并综合这个实例?我假设B将使用A创建的同一个NSDate实例,并且如果内存不足,可能会在viewDidUnload中删除A的实例。
在另一方面,如果我保留和合成它,我要释放它当B的看法已经一去不复返了。当我回到A时,NSDate实例消失了。
那么,什么是最好的做法吗?我应该在B中创建一个新的NSDate对象,并使其与传入的日期相同?并保留/综合这个新的实例?
但是在B的viewDidUnload中,NSDate实例被设置为nil。 A仍然保留它不是一个问题吗?或者我不应该在viewDidUnload中将其设置为零? –
'A'和'B'分别维护指向'NSDate'实例的指针。当调用B的'viewDidUnload'时,你将它的_pointer_设置为'NSDate'实例为'nil'。实例本身仍然存在于内存中,仍然可以通过'A'访问。它**是一个问题,如果你没有先释放它,将指针设置为'NSDate'为'nil'。这将导致内存泄漏,因为'NSDate'的保留计数将不会正确递减,因此永远不会被释放。 –
关于你是否应该释放''viewDidUnload'中的'NSDate',否则我认为这可能是不值得的。由于它仍然由'A'保留,所以如果当'B'的'viewDidUnload'被调用时''A实例仍然存在,它将不会被释放。因此,你并没有通过在该方法中释放它来完成任何事情。 –