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版的好像看到过,未仔细分析。
"违背了类的封装,应该是不能直接访问数据“ ? 这和类的封装没有什么关系吧?
应该看具体的需求,比如说 iOS开发 经典的”View 中不写事件逻辑“,可仍然有 Self-Manager模式;
正如楼上所例
view.frame.size.height = 10;
view 的 frame 属性只能被重新设置而不能被修改其属性,是为了方便监听frame的变化。