违背类的封装,直接操作数据。感觉是一道挺经典的iOS面试题,没找到答案。会发生什么错误呢?
class Information: NSObject {
var phoneNum: String?
var age: Int?
init(phone: String, age: Int) {
self.phoneNum = phone
self.age = age
}
}
class Person: NSObject {
var info: Information
var name: String
init(name: String, info: Information) {
self.name = name
self.info = info
}
}
var info = Information(phone: "123", age: 5)
var person = Person(name: "deng", info: info)
person.info.phoneNum = "123"
person.info.phoneNum = “123”
这句代码,会引发什么错误?
编译过了,项目跑起来,没事。
我觉得,他直接操纵Information类的属性,违背了类的封装,应该是不能直接访问数据,应该要通过类暴露在外面的方法设置。
面试上遇到的,感觉应该有更加深刻的原因。 以前OC版的好像看到过,未仔细分析。
- 如何获得美国各所大学的招生数据?有没有可以调用的api?
- Mac的磁盘工具不能合并移动硬盘的分区,也不能进行分区(分区按钮为灰色)?
- iOS oc collectioview 的headerview 为什么会和nav bar 出现一段距离 ?
- iOS 控件UIStepper能否在中间加个可以显示数字的Label ?
- ios 安装cocoapods
- iOS 中文字体问题
- QQ 微信添加下载APP下栏有什么方式解决?
- collectionview 使用 flow layout时, header的高度, 有方法设置吗?
- 关于修改scrollView.contentSize的问题
- 七牛 iOS sdk 下载文件方法
- 一个类的其中一个属性是另一个类,setValuesForKeysWithDictionary是怎么工作的?
- webViewDidFinishLoad问题
- 关于APP 混合开发,有开发过的么?
这个问题语言无关,试想一下如果一个类有birthday和age两个属性,这两个属性是不是相关的,如果采用你上述的方法有什么问题?