Swift之屬性

屬性

  • 屬性將與指定類垫言,結(jié)構(gòu)體,枚舉相關(guān)聯(lián)雹洗。

存儲(chǔ)屬性: 將常量和變量存儲(chǔ)為實(shí)例的一部分。有類林束,結(jié)構(gòu)體提供欠雌。

計(jì)算屬性: 計(jì)算值蹄梢,由類,結(jié)構(gòu)體富俄,枚舉提供禁炒。

屬性觀察:定義屬性觀察器來監(jiān)視屬性的修改,從而進(jìn)行自定義的操作進(jìn)行響應(yīng)蛙酪。

存儲(chǔ)屬性

struct Person {
    //以下為變量(var)和常量(let)的存儲(chǔ)屬性
    var name: String
    let sex: String
    let age: Int
}

var people = Person(name: "Bill", sex: "男", age: 20) //這個(gè)people我們使用var聲明的變量齐苛,所以他可以修改他的名字
people.name = "Jack"
people.age = 21 //將會(huì)出錯(cuò)翘盖,因?yàn)樗浅A浚╨et)初始化之后就不能在被改變了
  • 恒定結(jié)構(gòu)體實(shí)例
let people = Person(name: "Bill", sex: "男", age: 20)
people.name = "jason" //會(huì)出錯(cuò)
  • 由于結(jié)構(gòu)體是一個(gè)值類型桂塞,當(dāng)改值類型被標(biāo)記為常量時(shí)(let),其所有屬性也被標(biāo)記為常量馍驯。對(duì)類是不同的阁危,他們是引用類型,入伏哦將引用類型的實(shí)例分配給常量汰瘫,則人仍可以改變實(shí)例的變量屬性狂打。

懶加載

  • 一個(gè)lazy的存儲(chǔ)屬性,它的初始化值第一次調(diào)用時(shí)不會(huì)被計(jì)算混弥。您lazy在聲明之前編寫修飾符趴乡,表示一個(gè)懶惰的存儲(chǔ)屬性。

懶惰屬性必須是變量(var),因?yàn)閷?shí)例初始化完成后蝗拿,無法知道它的初始值晾捏,當(dāng)時(shí)常量必須在對(duì)象初始化時(shí)必須有一個(gè)初始值。因此常量屬性不能被聲明為lazy的哀托。

class Person: NSObject {
    var name: String
    lazy var tags = ["ios","Web", "Java", "Pyth"] //加入這是一個(gè)有很多數(shù)量的數(shù)組
    
    init(name: String) {
        self.name = name
    }
}

let people = Person(name: "Bill")
  • 這個(gè)時(shí)候tags并不會(huì)被創(chuàng)建惦辛,只有第一次調(diào)用才會(huì)會(huì)創(chuàng)建。

計(jì)算屬性

  • 錯(cuò)誤寫法
class Person: NSObject {
    
    var name: String {
        get {
            return self.name //這樣會(huì)造成遞歸調(diào)用仓手,最終造成程序崩潰
        }
        set(newName) {
            newName.appending("Bill")
        }
    }
}
  • 正確的姿勢(shì)
class Person: NSObject {
    private var _name: String!
    var name: String {
        get {
            return self._name //這樣會(huì)造成遞歸調(diào)用胖齐,最終造成程序崩潰
        }
        set(newName) {
            self._name = newName.appending("Bill")
        }
    }
}

屬性監(jiān)測(cè)

class Person: NSObject {
    var name: String = "" {
        didSet {
            print("已經(jīng)起好名字了")
        }
    }
}

只讀屬性

struct Cuboid {
    var width = 0.0, height = 0.0, depth = 0.0
    var volume: Double { //只讀
        return width * height * depth
    }
}
  • 另外一種設(shè)置方法就是使用let,但是這種方法不太靈活

靜態(tài)屬性 Static

  • 使用static聲明的屬性嗽冒,使用改類調(diào)用呀伙,該屬性存儲(chǔ)在靜態(tài)區(qū)。

  • 我們可以使用這個(gè)Static創(chuàng)建一個(gè)單例

class Person: NSObject {
     static let sharedInstance = Person()
    
    private override init() {
        //防止外界使用init實(shí)例化
    }
}

補(bǔ)充

  • 初始化Swift常量

  • 假如現(xiàn)在我們想聲明一個(gè)label, 我們一般會(huì)這樣做添坊。

func createLabel() -> UILabel {
    let label = UILabel()
    label.text = "Bill"
    return label
}
  • 當(dāng)然我們也可以通過閉包去初始化
let label: UILabel = {
    let label = UILabel()
    label.text = "Bill"
    return label
}()
  • 當(dāng)然我們還可以使用傳入?yún)?shù)的閉包
let label: UILabel = {
    $0.text = "Bill"
    $0.font = UIFont.systemFont(ofSize: 15)
    return $0
}(UILabel())

print(label.text!) // Bill
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剿另,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驰弄,老刑警劉巖麻汰,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異戚篙,居然都是意外死亡五鲫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門岔擂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來位喂,“玉大人,你說我怎么就攤上這事乱灵∷苎拢” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵痛倚,是天一觀的道長(zhǎng)规婆。 經(jīng)常有香客問我,道長(zhǎng)蝉稳,這世上最難降的妖魔是什么抒蚜? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮耘戚,結(jié)果婚禮上嗡髓,老公的妹妹穿的比我還像新娘。我一直安慰自己收津,他們只是感情好饿这,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撞秋,像睡著了一般长捧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上部服,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天唆姐,我揣著相機(jī)與錄音,去河邊找鬼廓八。 笑死奉芦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剧蹂。 我是一名探鬼主播声功,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宠叼!你這毒婦竟也來了先巴?” 一聲冷哼從身側(cè)響起其爵,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伸蚯,沒想到半個(gè)月后摩渺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剂邮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年摇幻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挥萌。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绰姻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出引瀑,到底是詐尸還是另有隱情狂芋,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布憨栽,位于F島的核電站帜矾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏徒像。R本人自食惡果不足惜黍特,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锯蛀。 院中可真熱鬧,春花似錦次慢、人聲如沸旁涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)劈愚。三九已至,卻和暖如春闻妓,著一層夾襖步出監(jiān)牢的瞬間菌羽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工由缆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留注祖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓均唉,卻偏偏與公主長(zhǎng)得像是晨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舔箭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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