日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

swift面向对象之属性

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 swift面向对象之属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

swift面向對象之屬性

swift屬性


存儲屬性

可以存儲常量和變量


惰性存儲屬性

語法:lazy var 變量

惰性存儲屬性只有在用的時候才會完成真正的初始化,剛開始的初始化代碼只是類型占位,并沒有分配存儲空間。

比如

class people{

var name:String

init(name:String){

self.name=name

}

}

class car{

lazy var carOwner=people(name:”shu”)

fun show(){

println(carOwner.name)

}

}

然后新建一個car實例,這時carOwner并沒有初始化,只有當car實例調用show方法時,才會給carOwner這個屬性分配存儲空間。


以下3種情況用到惰性存儲屬性

1.在構造屬性的時候無法知道屬性的外部信息,則使用惰性屬性(比如當你輸入框輸入時你才知道該把屬性賦值什么)

2.當屬性的值需要大量計算或者很復雜時,為了不阻塞對象初始化


3.必須把惰性存儲屬性設置成變量,因為屬性的值在實例完成構造前,無法得到


計算屬性

計算屬性有下面幾個特點

雖然是屬性,卻沒有實際的內存空間,在類的結構中不占存儲位置


提供了取值訪問器get和賦值訪問器set,負責獲取該屬性的值,或提供該屬性給其他的存儲屬性賦值


為swift類屬性增加了開閉規則


但凡計算屬性必須是變量類型var,因為計算屬性不確定


取值訪問器的標準格式

var 計算屬性:類型{

get{

return 值

?}

}


精簡形式

var? 計算屬性:類型{

return 值

}


對于賦值訪問器

var 計算屬性:類型{

set(newValue){

進行屬性賦值

}

}


精簡形式

var 計算屬性:類型{

set{}

}

只讀控制,即開閉規則的實現,對于某些屬性我們只允許訪問而不允許賦值,則稱這類屬性為只讀屬性。對外訪問開發,對內賦值關閉,這是編程原則里面很重要的開閉規則

var isHappy:Bool{

//取值訪問器

get{

if(dream!=“”&&(dream == realty)||lover!=nil||apperance=“帥到睡不著”)

return true

}else{

return false

}

}


類型屬性

類型屬性的格式為class var 屬性名:類型{get/set{}}


對于引用類型(類就屬于引用類型)必須使用計算屬性而不能使用存儲屬性


必須給類型屬性指定默認值,因為類型屬性不屬于實例范疇,不能使用任何一個實例是構造器賦值


類型屬性本質是計算屬性的范疇,與get/set訪問器的用法完全相同


下面一個例子

class People{

class var planet:String{

return “地球”

}

}


屬性觀察器

屬性觀察器不能用在惰性存儲屬性上,因為惰性存儲屬性是臨時產生的,所以無法觀察其有效期。


對于可以重寫的屬性,可以在子類中增加觀察器,但是對于非重寫的屬性則沒有必要,因為可以在賦值訪問器中觸發觀察的行為


類似于kvo模式


屬性觀察器可以用于全局變量和局部變量


willSet

willSet(willSetValue){

//willSetValue可以用戶自定義

}簡化格式為:willSet{

//必須使用newValue作為參數

}


didSet

didSet(oldSetValue){

//oldSetValue可以用戶自定義

}簡化格式為:didSet{

//必須使用oldValue作為參數

//}


總結

以上是生活随笔為你收集整理的swift面向对象之属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。