swift中的权限控制

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可用)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 每天早晨的起来, 第一件事情,就是去阳台看风景 虽然阳台上有美丽的花, 但远处的风景更吸引我。 新的一天到来,总是...
    快乐的Alina阅读 1,824评论 0 2
  • 人生里第一次放孔明灯,许了愿,孔明灯升空的那一瞬,忍不住要落泪。是天空还是大海,允了我的愿望。感恩 今天,说走就走...
    漫漫无忧阅读 174评论 14 8
  • 昨晚在To do list上列了数条任务,一天下来只完成两件——健身and a simple thing,回顾以...
    髙彡鎏水阅读 192评论 0 0

友情链接更多精彩内容