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

  • H5页面如何跟APP应用(iOS端,安卓端)交互?
  • ios数组对象排序 就是类似QQ评论和回复 服务器是按照时间排的 我现在要排序回复插到回复的那条评论下面
  • 为什么在viewLoad方法里调用[setToolbarHidden:animated:]不起效果
  • iOS imageWithData 加载出来的图片为null
  • 新人求助:关于IOS APP向下兼容的问题
  • ios-OCR-Tesseract
  • 打电话时,或者开启个人热点, APP 界面下移
  • iOS 如何获取网络的接入点?
  • iOS开发,为避免循环引用有时我们会在block里使用weakSelf
  • objective-c中非共享的实例是指什么?
  • IOS获得当前页面之前的界面
  • IOS开发,上传完图片后,怎么获取图片的URL?
  • One Solution collect form web for “违背类的封装,直接操作数据。感觉是一道挺经典的iOS面试题,没找到答案。会发生什么错误呢?”

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

    .