swift中的权限控制

2018-05-15  本文已影响0人  陈藩

swift 中的三种权限

private 私有的

在哪里写的,就在哪里用。无论是类,变量,常量还是函数,一旦被标记为私有的,就只能在定义他们的源文件里使用,不能为别的文件所用。可以用来隐藏某些功能的细节实现方式。

internal 内部的

标记为internal的代码块,在整个应用(App bundle)或者框架(framework)的范围内都是可以访问的。

public 公开的

标记为public的代码块一般用来建立API,这是最开放的权限,使得任何人只要导入这个模块,都可以访问使用。

swift里面所有的代码实体的默认权限都是internal。

除了可以给整个声明设置权限,swift还允许在需要的时候,把某个属性的取值权限比赋值权限设置的更加开放。

eg:

public class ListItem {
// ListItem这个类,有两个公开的属性
    public var text: String
    public var isComplete: Bool
// 下面的代码表示把变量UUID的赋值权限设为private,对整个app可读,但值只能在本文件里写入
private(set) var UUID: NSUUID

public init(text: String, completed: Bool, UUID: NSUUID) {
    self.text = text
    self.isComplete = completed
    self.UUID = UUID
}
// 这段没有特别标记权限,因此属于默认的internal级别。在框架目标内可用,但对于其他目标不可用 
func refreshIdentity() {
    self.UUID = NSUUID()
}

public override func isEqual(object: AnyObject?) -> Bool {
    if let item = object as? ListItem {
        return self.UUID == item.UUID
    }
  return false
}

当使用Objective-C 和swift混合开发时,需要注意的是:
1.如果再写的是一个应用,Xcode会生成一个头文件来保证两者的可互访行,而这个生成的头文件会包含public和internal级别的声明
2.如果你的最终产品是一个swift框架,头文件里只会出现标记为public级别的声明(因为框架的头文件属于公开的Objective-C接口的一部分,只有public部分对于Objective-C可用)。

上一篇 下一篇

猜你喜欢

热点阅读