Кажется, что childController - это поле в этом классе, и поэтому (мы надеемся) освобождает его в разделе dealloc.
Он / она фактически создает его только один раз.
Редактировать:
После проверки нулевого значения на childController он получает счет удержания 1и назначен на поле.Если childController не выпущен преждевременно, это будет сделано только один раз за время существования экземпляра всего этого класса.