Generally delegation sounds much better for your situation. You can use blocks to implement the delegation if you want to minimise your code.
Ensure that all objects which are observers remove themselves from all observations in their dealloc
method:
[[NSNotificationCenter defaultCenter] removeObserver:self];