В чем разница между private и fileprivate в Swift 4
в Swift 4, так как теперь private
отображается в расширениях также в том же файле исходного кода, как он отличается от fileprivate
модификатор доступа?
Справочная информация: в Swift 3 частные переменные класса не отображаются в его расширениях в одном файле. За это,fileprivate
пришлось использовать.
3 ответов
Файл Private
File-private access ограничивает использование сущности собственным исходным файлом определения. Используйте файл-Частный доступ, чтобы скрыть детали реализации определенной части функциональности, когда эти детали используются во всем файле.
синтаксис: fileprivate <var type> <variable name>
пример: fileprivate class SomeFilePrivateClass {}
частная
Частный доступ ограничивает использование сущности заключением объявление, и к расширениям того объявление, которые находятся в том же файле. Используйте Частный доступ, чтобы скрыть детали реализации определенной части функциональности, когда эти детали используются только в одном объявлении.
синтаксис: private <var type> <variable name>
пример: private class SomePrivateClass {}
вот более подробно обо всех уровнях доступа:Уровни Быстрого Доступа
ответ на ваш вопрос: (в Swift 3 частные переменные класса не отображаются в его расширениях в одном файле. Для этого нужно было использовать fileprivate.)
да, в Swift 4.0 Private теперь доступен в расширении, но в том же файле. Если вы объявите / определите расширение в другом файле, то ваша частная переменная не будет доступна вашему расширению
смотреть на это изображения:
: ViewController.быстрый
здесь расширение и контроллер просмотра находятся в одном файле, следовательно, частная переменная testPrivateAccessLevel
доступен в расширении
: вопросами и ответами.быстрый
здесь расширение и контроллер просмотра находятся в разных файлах, следовательно, частная переменная testPrivateAccessLevel
не работает в расширение.
здесь класс ViewController2
является наследником ViewController
и оба находятся в одном файле. Здесь частная переменная testPrivateAccessLevel
недоступен в подклассе, но fileprivate доступен в подклассе.
применимо в swift 4.0 и его версиях
частная
Частный доступ только в классе и его расширение (когда расширение находится в том же самом .swift file).
File Private
Файл-Частный доступ только в классе и его расширение и подкласс (когда расширение или подкласс находятся в одном и том же .swift file).