我目前正在关注CS 193P,而我正在讲课2。 如果您之前已经关注过此课程,那么我们只是添加了一个标签来输出翻转次数。
这里是视图和控制器的截图(讲座的原始代码):
我注意到教师正在从flipCount的setter中更改flipsLabel的文本。但是,我认为只要调用touchCardButton方法,只需向flipsLabel对象发送消息就会更容易/更直观。这是修改后的屏幕截图:
有人可以解释一下导师写这种方式的原因吗?他说"而且这里有另外一个使用getter和setter的好处,那就是让UI与一个属性保持同步"
答案 0 :(得分:3)
self.flipsLabel
的内容仅取决于flipCount
属性。
之后您可以在多个地方更改flipCount
的值,如果您按照教师说的那样工作,则每次更改self.flipsLabel
时都不需要更新flipCount
的内容}}
您处于一个简单的用户案例中,可能无论如何实现它,但如果您处于复杂的用户案例中,您可以在100个位置更改flipCount
的值,以您直观的方式,必须添加100次[self.flipsLabel setText:[....]]
,如果您忘记在一个地方添加,则会出现错误。
答案 1 :(得分:3)
我在大约2年多前从CS193P开始了我的iOS开发人员职业生涯。
就像上面提到的KudoCC一样,如果你使用你的方法在10个不同的地方设置flipCount
,那么你也必须在10个不同的地方设置self.flipsLabel
。因此,您的方法将拥有更多代码行,而教授的方式是使用更少的代码行。
我个人认为这是编程的艺术。我们有不同的方法在编程中实现相同的功能。但是,编程中使用的代码越少,通常就越好。
答案 2 :(得分:2)
他的代码的目的是:每次为flipCount属性设置新值时,标签文本也会更改。您无需再次设置标签文本。您的代码将清晰,并且易于修改。