NS_CLOSED_ENUM на самом деле не редактируется? - PullRequest
1 голос
/ 23 мая 2019

Согласно документации Apple, новый макрос NS_CLOSED_ENUM, добавленный для Swift 5, не подлежит изменению.Как это возможно?Разве я не могу просто очистить сборку, добавить значение и перекомпилировать свое приложение?

Важно

Как только перечисление помечено как закрытое, этодвоичное и несовместимое с исходным кодом изменение, чтобы добавить новое значение.Если у вас есть какие-либо сомнения по поводу перечисления, получающего частное или дополнительное общедоступное дело в будущем, используйте вместо этого макрос NS_ENUM.

Я смог добавить новое значение в наше приложение и скомпилировать просто отлично (после обновления дел переключения).

1 Ответ

2 голосов
/ 23 мая 2019

Когда вы используете NS_CLOSED_ENUM, вы даете обещание потребителям вашего API, что перечисление никогда не изменится, ни сейчас, ни в будущем.

Конечно, ничто не мешает вам сделать это изменение, но если вы это сделаете, то теперь вы нарушили это обещание. Как вы сказали, он прекрасно компилируется после обновления регистра переключателей .

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

См. этот пост для получения дополнительной информации .

...