У меня есть частный протокол, определенный в файле, как показано нижеSwift контроля доступа по протоколу соответствия
private protocol testProtocol {
func testFunc1()
func testFunc2()
}
Общественный класс соответствует приведенному выше протоколу следующим
public class testClass : testProtocol {
func testFunc1() {}
func testFunc2() {}
}
В соответствии с яблоками документации, то члены открытого класса получают доступ к внутреннему контролю доступа по умолчанию, если он явно не установлен на другой модификатор управления доступом.
В документации также говорится, что соответствие типа протоколу с более низким контролем доступа сделает реализацию контроля доступа к протоколу таким же, как и протокол. В этом случае, поскольку управление доступом типа является общедоступным, а управление доступом к протоколам является приватным, методы testfunc1 и testfunc2 должны получить доступ к частному управлению доступом.
Когда класс конкретизируется в другом исходном файле и методы доступны, как показано ниже, компилятор не выдает ошибку, которая не ожидается, так как методы должны быть закрытыми в соответствии с руководящими принципами
var test: testClass = testClass()
test.testFunc1()
Это ожидаемое поведение? Я что-то упускаю?
Вы нашли решение? – ZevsVU