나는 이미 유지하고 합성하고있는 NSDate 인스턴스로 UIViewController (A라고 함)를 가지고있다.다른 객체의 유지 된 변수를 유지 하시겠습니까?
또 다른 방법으로 다른 UIViewController (B라고 함)를 만들고 NSDate 인스턴스를 전달하고 싶습니다. B에서 나는 그것을 사용하려고합니다. 이 인스턴스도 유지하고 합성해야합니까? B가 A와 동일한 NSDate 인스턴스를 사용한다고 가정하고, 메모리가 부족하면 A의 인스턴스를 viewDidUnload에서 삭제할 수있는 가능성이있을 수 있습니다.
반면에 나는 그것을 보존하고 합성하면 B의 관점이 사라지면 그것을 할당 해제 할 것입니다. 그리고 A로 돌아 가면 NSDate 인스턴스가 사라집니다.
여기에있어 가장 좋은 방법은 무엇입니까? B에서 새로운 NSDate 객체를 만들고 전달 된 날짜와 동일한 날짜로 설정해야합니까? 이 새로운 인스턴스를 보유/합성 할 수 있습니까?
그러나 B의 viewDidUnload에서 NSDate 인스턴스는 nil로 설정됩니다. 아직도 A가 그것을 유지할 때 이것이 문제가되지 않습니까? 또는 viewDidUnload에서 nil로 설정하지 않아야합니까? –
'A'와'B'는 NSDate 인스턴스에 대한 별도의 포인터를 유지합니다. B의'viewDidUnload'가 호출되면 _pointer_를'NSDate' 인스턴스에'nil'으로 설정합니다. 인스턴스 자체는 여전히 메모리에 존재하며 여전히 'A'에 액세스 할 수 있습니다. ** 처음에 포인터를 놓지 않고'NSDate' 포인터를'nil'으로 설정하면 ** ** 문제가됩니다. 그게 NSDate의 유지 카운트가 제대로 감소하지 않기 때문에 메모리 누수를 일으킬 것이다. 그래서 결코 할당 해제되지 않을 것이다. –
'viewDidUnload'에서'NSDate'를 해제하고'nil'할지 어떨지에 관해서는 그렇게 할 가치가 없을 것이라고 생각합니다.여전히'A'에 의해 유지되기 때문에,'B'의'viewDidUnload'가 호출 될 때 당신의'A' 인스턴스가 여전히 존재한다면 그것은 메모리로부터 해방되지 않을 것입니다. 따라서, 당신은 그 방법으로 그것을 공개함으로써 실제로 어떤 것도 성취하지 못합니다. –