Когда вы используете NS_CLOSED_ENUM
, вы даете обещание потребителям вашего API, что перечисление никогда не изменится, ни сейчас, ни в будущем.
Конечно, ничто не мешает вам сделать это изменение, но если вы это сделаете, то теперь вы нарушили это обещание. Как вы сказали, он прекрасно компилируется после обновления регистра переключателей .
Если вы объявляете, что это закрытое перечисление, вы говорите всем разработчикам, что им не нужно беспокоиться об их изменении. Это полезно в Swift 5, который добавляет конструкцию @unknown default
в операторы switch
для обработки незакрытых перечислений.
См. этот пост для получения дополнительной информации .