Swift类中如何创建一个对外只读对内可读写的属性
2016-07-12 10:11
441 查看
很简单用private修饰符,后面跟限制关键字set:
不过如上上述类定义在playground中的话,实际你会发现如果去掉后面的(set)照样可以在外部访问:
这是因为Swift中private修饰符的含义和传统面向对象中的不太一样,在Swift中private只是限制在同一个文件中的可见性.所以要想它真正发挥作用,你必须在外部文件中才能体会到:
That’s OK! ;]
class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print("raw is \(rawValue)") } func forwardRawValue(){ rawValue += 1 } }
不过如上上述类定义在playground中的话,实际你会发现如果去掉后面的(set)照样可以在外部访问:
let day = Day() day.rawValue+=1 //that's OK! day.forwardRawValue() day.showRawValue()
这是因为Swift中private修饰符的含义和传统面向对象中的不太一样,在Swift中private只是限制在同一个文件中的可见性.所以要想它真正发挥作用,你必须在外部文件中才能体会到:
class ViewController: UIViewController { func test(){ let day = Day() //day.rawValue = 99 Error!!! day.showRawValue() day.forwardRawValue() day.showRawValue() } }
That’s OK! ;]
相关文章推荐
- Swift类中如何创建一个对外只读对内可读写的属性
- Swift类中如何创建一个对外只读对内可读写的属性
- iOS10.0 & Swift 3.0 对于升级项目的建议
- yii 框架用swiftmailer 发送邮件
- iOS8自定义Collection View Cell - Swift教程
- swift学习笔记
- Swift基础(六)解包
- Swift基础(五)字典
- Swift基础(四)数组
- Swift -banner滚动图自定义
- Swift - 与OC混编时如何创建桥接头文件
- Swift - 协议(protocol)
- Swift - 文件,文件夹操作大全
- Swift - 文本标签(UILabel)的用法
- Swift - 按钮(UIButton)的用法
- 使用 Xcode 的 Target 区分开发和生产环境
- 成长小计-Swift中 as、as!、as?
- target XXX do ->end 常见问题
- 成长小计Swift引入三方库报错问题
- 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程(Part 1)