swift學習之屬性

屬性

存儲屬性

存儲屬性就是一個存儲常量let或者變量var的屬性
存儲屬性有一個專屬技能lazy(延時加載或懶加載)
lazy必須與var=同時出現(xiàn)
lazy表達式 =右邊必須是一個常量(閉包的簡化)或者一個執(zhí)行閉包
存儲屬性的標志let=lazy var,屬性表達式存在任何一個標志都是存儲屬性

class Person
{
     //存儲屬性
     let name:String = "小史"
     lazy var age:Int = 0
     var firstName:String?
    lazy var secondName:String = {
        return "hello" + "world"
    }()
}

計算屬性

計算型屬性通常依賴于其他屬性

計算屬性不直接存儲變量值颜价,而是通過gettersetter方法來操作變量值getter取值瀑粥,setter賦值
為了防止死循環(huán)計算屬性的gettersetter方法實現(xiàn)需要一個中間變量屬性來完成
計算屬性的getter方法是必須實現(xiàn)的台汇,setter方法可以選擇實現(xiàn)
計算屬性如果只實現(xiàn)了getter方法砾淌,就是只讀屬性
計算屬性操作的是變量值即纲,只能用var

class Person{
    private var _name:String?//中間變量屬性
    var name:String?{
        get{
            return _name
        }
        set{
            _name = newValue
        }
    }

   //只讀屬性實現(xiàn)具帮,只讀屬性可以省略get關鍵字及一對{}
    var realName:String{
         print(_name)
         return _name
    }
}

類型屬性

類型屬性也區(qū)分計算屬性和存儲屬性
static修飾的既可以是計算屬性也可以是存儲屬性
class修飾的屬性只能是計算屬性
需要在子類當中重寫的類型屬性,必須使用class修飾低斋,這里的重寫包括添加屬性觀察器
永遠不要用用lazy修飾一個類型屬性(lazy是存儲屬性的專屬但是默認存儲類型屬性本身就是lazy的)
出過以上三條其余參照上面實例屬性

class Person{
    static var firstName = "小史"
    private static var _secondName = "??"
    class var secondName:String{
        get{
              return _secondName
        }
        set{
              _secondName = newValue
        }
   }
}

屬性觀察器

屬性觀察器最常用的方式就是在屬性觀察器方法中更新UI蜂厅,當然像OC一樣在setter方法中更新UI也是不錯的選擇,個人感覺因為實現(xiàn)setter就必須實現(xiàn)getter膊畴,然而我們只需要的是setter掘猿,getter并沒有什么卵用,所以還不如直接寫在觀察器方法中更新UI
屬性的初始化不會觸發(fā)屬性觀察器

給當前類添加屬性觀察器

只能給lazy之外的存儲屬性添加屬性觀察器

var storedProperty:String?{
    //willSet默認攜帶newValue參數(shù)唇跨,當然參數(shù)名稱可以自行定義
    willSet
    {
        //更新UI
        print(newValue)
    }
    //didSet默認攜帶oldValue參數(shù)稠通,當然參數(shù)名稱可以自行定義
    didSet
    {
        //更新UI
        print(oldValue)
    }
}

給繼承屬性添加屬性觀察器

子類可以給任何繼承而來的非let屬性添加屬性觀察器衬衬,包括全局屬性
只能通過override重寫屬性給繼承屬性添加屬性觀察器
重寫屬性必須明確屬性的類型,方便編譯器定位哪個屬性需要重寫

override var storedProperty:String?{
    //willSet默認攜帶newValue參數(shù)改橘,當然參數(shù)名稱可以自行定義
    willSet
    {
        //更新UI滋尉,這里的newValue是將要賦給storedProperty的值,每次拿到的都是新值
        print(newValue)
    }
    //didSet默認攜帶oldValue參數(shù)唧龄,當然參數(shù)名稱可以自行定義
    didSet
    {
        //更新UI這里的oldValue是storedProperty賦新值前的值兼砖,第一次拿到的就是nil奸远,可選類型為賦新值就是nil
        print(oldValue)
    }
}

重寫

重寫關鍵字override既棺,子類可以重寫父類的函數(shù)或者屬性,這里著重討論重寫屬性懒叛,這里的重寫包括給繼承屬性添加(或者重寫)屬性觀察器和重寫屬性的setter和getter方法
子類可以給任何繼承而來的非let屬性重寫(添加)屬性觀察器和getter丸冕,setter方法,包括計算屬性和存儲屬性
在寫setter和getter的時候薛窥,可以將一個集成來的只讀屬性胖烛,重寫寫成一個讀寫屬性,但是不能將一個讀寫屬性重寫成一個只讀屬性诅迷,就像不能將一個float值賦給一個double型佩番,但是不能把一個double型賦值給一個float型一樣,會截斷

private var _storedProperty:String? = "屬性" 
override var storedProperty:String?{
    get
    {
         return _storedProperty
    }
    set
    {
         _storedProperty = oldValue
    }
}

在方法或?qū)傩远x關鍵字前面添加final關鍵字表明該屬性或者方法不能被重寫
在類定義前添加final關鍵字表明該類不能被繼承

全局變量

默認的swift中的全局變量都是延時加載的與實例屬性的懶加載屬性是相似的(但是并沒有顯式的lazy關鍵字)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罢杉,一起剝皮案震驚了整個濱河市趟畏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滩租,老刑警劉巖赋秀,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異律想,居然都是意外死亡猎莲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門技即,熙熙樓的掌柜王于貴愁眉苦臉地迎上來著洼,“玉大人,你說我怎么就攤上這事而叼∩眢裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵澈歉,是天一觀的道長展鸡。 經(jīng)常有香客問我,道長埃难,這世上最難降的妖魔是什么莹弊? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任涤久,我火速辦了婚禮,結(jié)果婚禮上忍弛,老公的妹妹穿的比我還像新娘响迂。我一直安慰自己,他們只是感情好细疚,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布蔗彤。 她就那樣靜靜地躺著,像睡著了一般疯兼。 火紅的嫁衣襯著肌膚如雪然遏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天吧彪,我揣著相機與錄音待侵,去河邊找鬼。 笑死姨裸,一個胖子當著我的面吹牛秧倾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傀缩,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼那先,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赡艰?” 一聲冷哼從身側(cè)響起售淡,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞄摊,沒想到半個月后勋又,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡换帜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年楔壤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惯驼。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹲嚣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祟牲,到底是詐尸還是另有隱情隙畜,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布说贝,位于F島的核電站议惰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乡恕。R本人自食惡果不足惜言询,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一俯萎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧运杭,春花似錦夫啊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虱咧,卻和暖如春熊榛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背彤钟。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工来候, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逸雹。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像云挟,于是被迫代替她去往敵國和親梆砸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1园欣、范型范型所解決的問題 函數(shù)帖世、方法、類型:類沸枯,結(jié)構體日矫,枚舉,元組類型绑榴,協(xié)議參數(shù)哪轿,返回值,成員函數(shù)參數(shù)翔怎,成員屬性類...
    我是小胡胡123閱讀 832評論 0 1
  • Swift語法基礎(五)-- (類和結(jié)構體、屬性容握、方法) 本章將會介紹 類和結(jié)構體對比結(jié)構體和枚舉是值類型類是引用...
    寒橋閱讀 1,081評論 0 1
  • 20- 枚舉,枚舉原始值,枚舉相關值,switch提取枚舉關聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,282評論 1 6
  • 她死了宣脉!在他出生的那天! 生命的曲目更迭不休剔氏,有人離開塑猖,有人進來堪遂。每個生命中都有好幾個靈魂交織...
    斯夜閱讀 149評論 0 0
  • 農(nóng)歷六月二十三,也就是昨天7月16號萌庆,老媽的生日溶褪,今年特別湊巧,我的陽歷生日正巧和媽媽的農(nóng)歷生日同一天践险,這不又有理...
    不一樣的Jing閱讀 250評論 0 0