Ваш метод init вызывается? (и почему ты не называешь там [супер инициата]?)
В зависимости от того, как вы создаете свой viewController, сам метод init может не вызываться. Скорее, можно использовать другой инициализатор пыток, такой как initWithCoder: если он загружается из xib.
Обычно я регистрируюсь для уведомлений в viewDidLoad и отменяю регистрацию в viewDidUnload. Есть ли какая-то причина, по которой вам нужно было бы получать уведомление, если ваш просмотр по какой-то причине был выгружен (например, слишком много памяти?)