import foundation
//乙個儲存屬性就是儲存在特定類或結構體的例項裡的乙個常量或變數
struct fixedlengthrange
var rangeofthreeitems = fixedlengthrange(firstvalue: 0, length: 3)
// 該區間表示整數0,1,2
rangeofthreeitems.firstvalue = 6
// 該區間現在表示整數6,7,8
//常量和儲存屬性
let rangeoffouritems = fixedlengthrange(firstvalue: 0, length: 4)
// 該區間表示整數0,1,2,3
= 6
// 儘管firstvalue詩歌變數屬性,這裡還是會報錯
//延遲儲存屬性。延遲儲存屬性是指 當第一次被呼叫的時候才會計算其初始值的屬性
//在屬性宣告前使用lazy來標示乙個延遲儲存屬性,必須將延遲儲存屬性宣告成變數
class dataimporter
class datamanager
let manager = datamanager()
// dataimporter 例項的 importer 屬性還沒有被建立
print(manager.importer.filename)
// dataimporter 例項的 importer 屬性現在被建立了
// 輸出 "data.txt」
//計算屬性。類、結構體和列舉可以定義 計算屬性,計算屬性不直接儲存值,而是提供乙個 getter 來獲取值,乙個可選的 setter 來間接設定其他屬性或變數的值
struct point
struct size
struct rect
set(newcenter)
/*set */}
}var square = rect(origin: point(x: 0.0, y: 0.0), size: size(width: 10.0, height: 10.0))
let initialsquarecenter = square.center
square.center = point(x: 15.0, y: 15.0)
print("square.origin is now at (\(square.origin.x), \(square.origin.y))")
// 輸出 "square.origin is now at (10.0, 10.0)
//唯讀計算屬性
struct cuboid
}let fourbyfivebytwo = cuboid(width: 4.0, height: 5.0, depth: 2.0)
print("the volume of fourbyfivebytwo is \(fourbyfivebytwo.volume)")
// 輸出 "the volume of fourbyfivebytwo is 40.0
//屬性監視器
//屬性監視器監控和響應屬性值的變化,每次屬性被設定值的時候都會呼叫屬性監視器,甚至新的值和現在的值相同的時候也不例外
//可以為除了延遲儲存屬性之外的其他儲存屬性新增屬性監視器,也可以通過過載屬性的方式為繼承的屬性(包括儲存屬性和計算屬性)新增屬性監視器
class stepcounter
didset }}
}let stepcounter = stepcounter()
stepcounter.totalsteps = 200
// about to set totalsteps to 200
// added 200 steps
stepcounter.totalsteps = 360
// about to set totalsteps to 360
// added 160 steps
stepcounter.totalsteps = 896
// about to set totalsteps to 896
// added 536 steps
swift 記憶體管理
不管在什麼語言裡,記憶體管理的內容都很重要,所以我打算花上比其他 tip 長一些的篇幅仔細地說說這塊內容。swift 是自動管理記憶體的,這也就是說,我們不再需要操心記憶體的申請和分配。當我們通過初始化建立乙個物件時,swift 會替我們管理和分配記憶體。而釋放的原則遵循了自動引用計數 arc 的規...
Swift 記憶體管理
1 object c 經歷兩個階段 1 手動引用計數記憶體管理 manual reference counting,mrc 2 自動引用計數記憶體管理 automatic refernce counting,arc 2 引用型別 記憶體分配到 堆 上,需要人為管理。值型別 記憶體分配到 棧 上,有處...
Swift之從xls檔案讀取資料
研究了半天,並沒有研究出來如何在swift中讀取xls格式的資料,故只能複製貼上到txt文件中。資料來源如下 它橫排由 t分割,豎行之間由 r分割,最後實現如下,詳情見注釋 func readfile double double 從source file 讀取txt資料 多列 for var i 0...