Ответ
public и internal — это модификаторы доступа, определяющие область видимости сущностей (классов, свойств, методов) в Swift.
public
- Доступен везде, включая другие модули.
- Используется для создания публичного API библиотек и фреймворков.
- Важно:
public-класс не позволяет наследоваться или переопределять его методы вне модуля. Для этого требуетсяopen.
// Модуль MyFramework
public class PublicClass {
public var value: Int = 10
}
// Доступен в другом модуле: import MyFramework
let obj = PublicClass()
internal
- Доступен только внутри модуля, где объявлен.
- Это модификатор по умолчанию, если не указан другой.
- Невидим для других модулей.
// Модуль MyFramework
internal class InternalClass {}
// Недоступен в другом модуле при импорте
Итог: public — для межмодульного использования, internal — для скрытия деталей реализации внутри модуля.