Swift學(xué)習(xí)筆記-屬性

  • 存儲屬性只能用于類和結(jié)構(gòu)體蔓姚,計算屬性可以用于類颤绕,結(jié)構(gòu)體幸海,枚舉。
  • 結(jié)構(gòu)體的屬性為var可變 但是如果結(jié)構(gòu)體實例為let不可變得屋厘,則var屬性也不可以修改涕烧,因為結(jié)構(gòu)體是值屬性。
  • 必須將延時屬性用var修飾汗洒。
  • 計算屬性必須用var修飾议纯,因為值是不固定的。不必糾結(jié)是否像oc中重寫setter一樣保存新值溢谤,因為必有g(shù)et方法瞻凤。
  • 屬性觀察器可以為除了延時存儲屬性之外的存儲屬性添加,即使新值和舊值相同也可以觸發(fā)世杀。
  • 全局的屬性都是延時計算的阀参,不需要用lazy修飾。
  • 類屬性用static修飾瞻坝,需要給一個初始值(因為沒有構(gòu)造方法)

1.存儲屬性

如果結(jié)構(gòu)體的實例為let不可變蛛壳,則其存儲屬性即使是可變的,也無法修改

struct FixedLengthRange {
    var firstValue: Int
    let length: Int
}
//相當(dāng)于初始化方法,所以可以給不可變得length賦值
let rangeOfThreeItems = FixedLengthRange(firstValue: 2, length: 5)
rangeOfThreeItems.firstValue = 3 //這里是會報錯的

如果結(jié)構(gòu)體的存儲屬性沒有默認(rèn)值衙荐,則在初始化的時候可以設(shè)置let類型的初始值捞挥,否則無法改變。

2.延遲存儲屬性

在被訪問的時候才被創(chuàng)建忧吟。(類似懶加載)

  • 如果一個被標(biāo)記為 lazy 的屬性在沒有初始化時就同時被多個線程訪問砌函,則無法保證該屬性只會被初始化一次。
class DataImporter {
    var filename = "data.text"
    
}
class DataManager {
    var data = [String]()
    lazy var importer = DataManager()
}
let manager = DataManager()
        manager.data.append("zc")
        manager.data.append("cz")
        print(manager.importer.data) //此時importer屬性才被創(chuàng)建

3.計算屬性

struct Point {
    var x = 0.0,y = 0.0
    
}

struct Size {
    var width = 0.0,height = 0.0
    
}

struct Rect {
    var origin = Point()
    var size = Size()
    var center :Point {
        get {
            let centerX = origin.x + size.width/2
            let centerY = origin.y + size.height/2
            return Point(x: centerX, y: centerY)
        }
        set(newCenter){
            origin.x = newCenter.x - size.width/2
            origin.y = newCenter.y - size.height/2
        }
    }
}

如果set(newCenter)改為set ,則默認(rèn)使用newValue表示溜族。
只讀計算屬性:只能獲取讹俊,不能設(shè)置,但是仍然要用var修飾,因為他不是固定不變的煌抒。

struct Cuboid {
    var width = 0.0, height = 0.0, depth = 0.0
    var volume: Double {
        return width * height * depth
    }
}

4.屬性觀察器

當(dāng)屬性被設(shè)置時會觸發(fā)哪怕值不變化仍劈。(默認(rèn)參數(shù)為newValue和oldValue)

class StepCounter {
    var totalSteps : Int = 0 {
        willSet(newValue){
            print(newValue)
        }
        didSet(oldValue){
            print(oldValue)
        }
    }
}

4.類型屬性

類型屬性相當(dāng)于類屬性,只有類對象可以直接改變他的值和獲取它的值寡壮。

struct AudioChannel {
    static let thresholdLevel = 10
    static var maxInputLevelForAllChannels = 0
    var currentLevel: Int = 0 {
        didSet {
            if currentLevel > AudioChannel.thresholdLevel {
                // 將當(dāng)前音量限制在閾值之內(nèi)
                currentLevel = AudioChannel.thresholdLevel
            }
            if currentLevel > AudioChannel.maxInputLevelForAllChannels {
                // 存儲當(dāng)前音量作為新的最大輸入音量
                AudioChannel.maxInputLevelForAllChannels = currentLevel
            }
        }
    }
}

///打印值為7
var left = AudioChannel()
        left.currentLevel = 6
        AudioChannel.maxInputLevelForAllChannels = 7
        print(AudioChannel.maxInputLevelForAllChannels)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耳奕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诬像,更是在濱河造成了極大的恐慌,老刑警劉巖闸婴,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坏挠,死亡現(xiàn)場離奇詭異,居然都是意外死亡邪乍,警方通過查閱死者的電腦和手機(jī)降狠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庇楞,“玉大人榜配,你說我怎么就攤上這事÷郎危” “怎么了蛋褥?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長睛驳。 經(jīng)常有香客問我烙心,道長,這世上最難降的妖魔是什么乏沸? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任淫茵,我火速辦了婚禮,結(jié)果婚禮上蹬跃,老公的妹妹穿的比我還像新娘匙瘪。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布丹喻。 她就那樣靜靜地躺著薄货,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驻啤。 梳的紋絲不亂的頭發(fā)上菲驴,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音骑冗,去河邊找鬼赊瞬。 笑死,一個胖子當(dāng)著我的面吹牛贼涩,可吹牛的內(nèi)容都是我干的巧涧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼遥倦,長吁一口氣:“原來是場噩夢啊……” “哼谤绳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起袒哥,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缩筛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堡称,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞎抛,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年却紧,在試婚紗的時候發(fā)現(xiàn)自己被綠了桐臊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡晓殊,死狀恐怖断凶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巫俺,我是刑警寧澤认烁,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站介汹,受9級特大地震影響砚著,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痴昧,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一稽穆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赶撰,春花似錦舌镶、人聲如沸柱彻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哟楷。三九已至,卻和暖如春否灾,著一層夾襖步出監(jiān)牢的瞬間卖擅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工墨技, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惩阶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓扣汪,卻偏偏與公主長得像断楷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崭别,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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