违背类的封装,直接操作数据。感觉是一道挺经典的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版的好像看到过,未仔细分析。

这个问题语言无关,试想一下如果一个类有birthday和age两个属性,这两个属性是不是相关的,如果采用你上述的方法有什么问题?

  • iOS 8.0 ~ 8.2 会出现preview直接卡住不动 而且没报什么错误 请问这是怎么回事?
  • iOS设备怎么判断是否安装过某个应用
  • Swift 便利构造器
  • ios 多个控件之间的大小适配
  • ios7 下 在scrollView添加View 然后push再返回 发现前后页面控件位置发生偏移,不知道什么原因
  • 初学oc 感觉方法很多很乱,怎么记,有没有资料整合在一起,求资料!!!!
  • ios 如何改变tableview多选时的颜色和前面的图标
  • webview接口已经通了,但是显示不出来,求解,按道理webview的蓝色应该在上面的,webview上没有view了
  • swift 初始化器在调用super.init前使用self的问题
  • 请问这种历史帐号的下拉框怎样实现呢?急!
  • ios的MKMapView在缩放时内存暴涨