key value observer Tag

A common problem that we often experience when developing iOS applications, is how to allow communication between our controllers, without the need to have excessive coupling. Three common patterns that appear time and time again throughout iOS applications include:
  1. Delegation
  2. Notifications through Notification Center, and
  3. Key value observing
So why do we need these patterns and when should and shouldn't they be used?