Object A holds a reference to Object B while Object B also holds a reference to Object A, then we have a retain cycle here. To break it, one of the objects should be defined as
weak. So the ARC can eventually count down to zero then release both objects.