违背类的封装,直接操作数据。感觉是一道挺经典的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两个属性,这两个属性是不是相关的,如果采用你上述的方法有什么问题?

  • 怎么能对获取的微信文章进行重新排版?
  • 我在tableview里面addSubview了 一个自身有代理的view,然后代理没有触发。
  • 用UIPickerView 做一个两列的城市选择器,选择第一列之后,更新第二列数据时为什么会崩溃。
  • iOS图片模糊效果导致背景底色不同
  • OpenGL旋转问题,控制模型根据手势移动
  • 如何获得最新版iOS的MAC地址?
  • 自从升级了xcode7之后每次上传archive到app store都会提示下面的警告。
  • 怎样让xcode7.3 在ios10上主动提示 是否允许应用访问数据?
  • 手机—通用—存储空间里面文稿数据的大小 和cache temp 文件夹缓存问题
  • 如何用代码生成vpn配置文件?
  • 用avoscloud的实时通信怎么在进行客户端与web端的通信。