1
我知道,與典型的面向對象編程,你不應該對你的屬性直接放棄訪問,而是有與私有財產交互的功能。隨着事實,斯威夫特有特性的didSet訪問是有必要私有化屬性或我可以離開它沒有私有化和訪問它從它的父隨着斯威夫特的didSet訪問我還需要隱藏訪問屬性
private var coins: Int = 0 {
didSet {
coinsLabel.text = "\(coins)"
}
}
func setCoins(amount: Int) {
coins = amount
}
func getCoinsAmount() {
return coins
}
//Setting the value from the parent
gameHUD.setCoins(amount: 50)
//retrieving the value from the parent
let coins = gameHUD.getCoinsAmount()
或者是不好的做法,只留下沒有私有化硬幣設置/直接從父母
gameHUD.coins = 50
let coins = gameHUD.coins
請記住,你沒有提供任何公開的方式來閱讀'coins',設置它。那是你要的嗎? – rmaddy
我只是試圖儘量保持問題的重點。如果我是讓硬幣私有財產我已經添加了一個公共getCoins()FUNC –
在OOP通常你不想直接給訪問你*字段*(數據成員)。屬性的機制(在Obj-C或C#中類似)是爲了避免爲每個數據成員定義setter和getter而創建的。 – Sulthan