6
我已經閱讀了Swift文檔並在這裏進行了搜索,但我仍然不確定如何實現類層次結構,其中每個子類都爲繼承的靜態屬性設置自定義值;即:關於在Swift中重寫類屬性的困惑
- 基類定義了一個靜態屬性:所有實例共享相同的值。
- 子類覆蓋靜態屬性:所有實例共享相同的值,與基類不同。
該屬性是否可以存儲?
另外,我應該如何從一個實例方法(不管特定的類)訪問屬性的值,並且每次都得到正確的值?下面的代碼可以工作嗎?
class BaseClass
{
// To be overridden by subclasses:
static var myStaticProperty = "Hello"
func useTheStaticProperty()
{
// Should yield the value of the overridden property
// when executed on instances of a subclass:
let propertyValue = self.dynamicType.myStaticProperty
// (do something with the value)
}
感謝。所以,如果類變量碰巧包含一些從文件中讀取的大字典(我無法每次計算),那麼我必須爲每個子類設置一個單獨的私有存儲靜態變量,將字典存儲在那裏,並在重寫(計算)類的屬性中返回它的值,對嗎? –
@NicolasMiari解決_「class vars不能被存儲的屬性」的一種方法_限制是將每個類放入其自己的文件_(通常你會這樣做)_然後創建一個文件範圍的存儲區, property var返回類computed-property var,如下所示:'fileprivate static var _thingStorage:String'。然後在你的類中,你的計算屬性變成了'覆蓋類var thing:String {return _thingStorage}'。 –