Уровень защиты растяжки - PullRequest
       35

Уровень защиты растяжки

0 голосов
/ 21 декабря 2018

У меня есть класс DataManager, и у него есть некоторые соответствующие функции и переменные.Например,

Class DataManager: NSObject {
   func doSomething()
   func doSomethingAgain()
}

Я переместил несколько методов в extension из DataManager.Я сделал расширение как fileprivate, потому что я не хочу показывать эти функции другим классам.Например,

Class DataManager: NSObject {
   func doSomething()
}

fileprivate extension DataManager {
   func doSomethingAgain()
}

До сих пор все было хорошо, теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я перемещаю этот extension в другой файл, время fileprivate не будет работать.Так какой же должен быть уровень защиты в таком случае.Надеюсь, вы поняли мое намерение.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Самый узкий режим доступа, с которым вы можете работать, это внутренний, который по умолчанию установлен в Swift.

Принимая от https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html:

"Swift предоставляет пять различных уровней доступа для объектовв вашем коде. Эти уровни доступа относятся к исходному файлу, в котором определена сущность, а также к модулю, к которому принадлежит исходный файл.

Открытый доступ и общедоступный доступсущности, которые будут использоваться в любом исходном файле из их определяющего модуля, а также в исходном файле из другого модуля, который импортирует определяющий модуль. Обычно вы используете открытый или открытый доступ при указании открытого интерфейса к платформе. Разница между открытым и открытымдоступ описан ниже.

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

Частный доступ к файлу ограничивает использование объекта собственным определяющим исходным файлом.Используйте частный доступ к файлу, чтобы скрыть подробности реализации определенной части функциональности, когда эти подробности используются внутри всего файла.

Частный доступ ограничивает использование сущности приложением декларациии расширениям этого объявления, которые находятся в одном файле.Используйте частный доступ, чтобы скрыть подробности реализации определенной части функциональности, когда эти детали используются только в пределах одной декларации. "

0 голосов
/ 21 декабря 2018

Уровень защиты должен быть internal (по умолчанию).Затем он будет доступен для всего в модуле.

Если вы хотите ограничить доступ к меньшему количеству классов, вам нужно поместить эти классы в их собственный модуль.Это только те уровни доступа, которые есть у Swift.

...