小编Sha*_*dav的帖子

协议一致性的Swift访问控制

我有一个在文件中定义的私有协议,如下所示

private protocol testProtocol {
 func testFunc1()
 func testFunc2()
}
Run Code Online (Sandbox Code Playgroud)

公共类符合上述协议如下

 public class testClass : testProtocol {
 func testFunc1() {}
 func testFunc2() {}
}
Run Code Online (Sandbox Code Playgroud)

根据apples文档,默认情况下,公共类的成员获得内部访问控制,除非它明确设置为不同的访问控制修饰符.

该文档还说,类型与具有较低访问控制的协议的一致性将使该类型的协议访问控制的实现与协议的实现相同.在这种情况下,由于类型的访问控制是公共的,并且协议访问控制是私有的,因此方法testfunc1和testfunc2应该获得私有的访问控制.

当在不同的源文件中实例化类并且如下所示访问方法时,编译器不会显示不期望的错误,因为根据指南,方法应该是私有的

var test: testClass = testClass()
test.testFunc1()
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?我错过了什么吗?

protocols access-control ios swift2

10
推荐指数
1
解决办法
5469
查看次数

标签 统计

access-control ×1

ios ×1

protocols ×1

swift2 ×1