今天周五廓块。基本的任務(wù)都已完成契沫,swift學(xué)習(xí)也順利了許多带猴。
今天發(fā)現(xiàn)一本基于swift2.0的教材,比我原來(lái)看的那邊要更新懈万,而且更薄一點(diǎn)拴清,就以這本書(shū)為主繼續(xù)學(xué)吧。目前看到118頁(yè)会通。
中午上ios論壇口予,又發(fā)現(xiàn)一本講ios開(kāi)發(fā)框架的書(shū),以swift為基礎(chǔ)涕侈,只有50頁(yè)沪停,看完了這本,大概就可以正式開(kāi)始我的游戲開(kāi)發(fā)了裳涛。
1 類和結(jié)構(gòu)
所有的結(jié)構(gòu)體都有一個(gè)自動(dòng)生成的成員逐一初始化器木张,用于初始化新結(jié)構(gòu)體實(shí)例中成員的屬性。新實(shí)例中給個(gè)屬性可以通過(guò)屬性的名稱傳遞到成員逐一初始化器中端三。
例如:
struct Resolution {
var width = 0
var height = 0
}
var resolution = Resolution() //賦默認(rèn)值
var resolution1 = Resolution(width: 3, height: 4)
注:與結(jié)構(gòu)體不同舷礼,類實(shí)例沒(méi)有默認(rèn)的成員逐一初始化器。
2 結(jié)構(gòu)體和枚舉都是值類型技肩。值類型被賦值給一個(gè)變量且轨,常數(shù),或者被傳遞給一個(gè)函數(shù)時(shí)虚婿,實(shí)際上操作的是其的拷貝旋奢。
在swift中,所有的基本類型:整數(shù)然痊,浮點(diǎn)數(shù)至朗,布爾值,字符串剧浸,數(shù)組锹引,字典都是值類型,并且都是以結(jié)構(gòu)體的形式在后臺(tái)實(shí)現(xiàn)的唆香。
所有的結(jié)構(gòu)體的枚舉都是值類型嫌变,這意味著它們的實(shí)例,以及實(shí)例中包含的任何值類型屬性躬它,在代碼中傳遞的時(shí)候都會(huì)被復(fù)制腾啥。
注意:這點(diǎn)和python完全不同,需要特別注意。
「===」恒等運(yùn)算符倘待,判斷兩個(gè)常量或者變量是否引用同一個(gè)實(shí)例疮跑。
「!==」
3 延遲存儲(chǔ)屬性。使用lazy修飾的屬性為延遲加載屬性凸舵,只有在第一次訪問(wèn)時(shí)才會(huì)創(chuàng)建
class DataImporter {
var fileName = "1.txt"
}
class DataManager {
lazy var importer = DataImporter() //不可以用let聲明
var data = [String]()
}
let manager = DataManager()
manager.data.append("123")
print(manager.importer.fileName) //只有在第一次訪問(wèn)時(shí)才會(huì)創(chuàng)建
4 計(jì)算屬性祖娘。除了存儲(chǔ)屬性外,swift還提供了計(jì)算屬性啊奄。計(jì)算屬性本身并不存儲(chǔ)值渐苏,但是提供一種get和set方法來(lái)獲得值,或設(shè)置其他屬性的值增热。
例如:
struct Point {
var x = 0.0
var y = 0.0
}
struct Size {
var width = 0.0
var height = 0.0
}
struct Rect {
var origin = Point()
var size = Size()
var center: Point {
get {
return Point(x: origin.x + 2, y: origin.y + 2)
}
set(newPoint) { //便捷寫(xiě)法 set { origin.x = newValue.x ….}
origin.x = newPoint.x
origin.y = newPoint.y
}
}
}
var square = Rect()
print(square.center)
square.center = Point(x: 1, y: 3)
print(square.origin)
明天又是周末了整以。
雖然還是有霧霾,還是蠻開(kāi)心的峻仇。