Вариант (1) - это подход с наивысшим риском возникновения головной боли, если вы будете проводить рефакторинг дальше по линии.Это может быть слишком рискованно, поэтому есть риск ошибиться, а затем придется тратить больше времени на их исправление.По этим причинам может быть лучше избегать этого.
Выбор между (2) и (3) имеет тенденцию провоцировать идеологические дебаты о глобальных переменных, инкапсуляции и т. Д.
Можно много чего сказатьдля (3), используя UINotificationCenter , даже если вы не придерживаетесь мнения, что глобалы - это зло.Он побуждает вас очень четко подумать о протоколе связи, который вы принимаете, он предотвращает беспорядок в делегате приложения, он имеет тенденцию быть наиболее стабильным для рефакторинга, если вы когда-либо захотите повторно использовать представления в другом месте, где у вас есть преимущество.и т. д.
В частности, с хорошо разработанными уведомлениями вы часто обнаруживаете, что если вы будете проводить рефакторинг дальше, у вас будет гораздо меньше работы - или даже вообще ничего - чтобы ваш код работал правильно.