The parent can hold references and keep track of the data that changes. It can simply call exposed update methods of its children.
The child controllers should use delegate protocols to inform the parent of changes. The delegate is weak reference to the parent in the form id <ChildDelegate>
. This is to avoid the retain cycle problems you are afraid of.