最近在學習swift,期間也看了不少教程和大神的博客,最後把筆記放這裏,方便查看複習~swift
附上學習資料地址:w3cschool-Swift 教程 、 YungFan大神的簡書(推薦看一下,有些知識點總結地簡直通俗易懂)安全
分號
:swift不須要末尾添加分號,除非幾行代碼連寫在一行的狀況markdown
空格格式
:swift很是注重格式,a = 1
與b=2
注意等號兩邊空格的格式必須一致函數
方法調用
:oc中[Person saveCall];
;swift中person.saveCall
相似oc的點語法oop
頭文件
:swift不須要導入頭文件就能夠引用其餘類的方法和屬性學習
枚舉類型
:能夠簡寫,直接.枚舉值
測試
self
:在當前類中訪問屬性或者方法,能夠省略self.
spa
構造函數
:oc中[[Person alloc] initWithName:xxx]
-> swift中Person(name:xxx)
操作系統
#selector
:oc中是@selector
,swift中是#selector
指針
Swift是一個類型安全(type safe)的語言。
即:用var來聲明瞭一個變量,只能修改對應類型下的值,不能修改數據類型。編譯的時候會進行類型檢查
,不匹配的地方會報錯。
var a = 12
a = "hello" //定義的是int類型,不能改變類型
複製代碼
用let聲明一個常量 或者 用var聲明一個變量的時候,在直接賦值的狀況下,能夠它的省略類型。swift會經過類型推斷
來選擇合適的類型
let a = 100
let b = 3.14
let c = "hello"
複製代碼
注意:若是沒有給浮點字面量標明類型,swift會自動推斷爲Double類型:
let a = 3.14159
print(type(of: a))//Double
let b = 3 + 0.14159
print(type(of: b))//Double
複製代碼
與oc用法同樣,但關鍵字使用 typealias
來修飾
//聲明
typealias abc = Int
//調用
let a: abc = 100
複製代碼
注意事項:
通常不須要設置特定的 Int8, Int16。只寫一個 Int,長度與操做系統有關,比如在32位系統上,寫一個 Int 就和 Int32 同樣。 UInt 也同樣
Int8, Int16, Int32, Int64 分別表示 8 位, 16 位, 32 位, 和 64 位的有符號整數形式。
UInt8, UInt16, UInt32, UInt64 分別表示 8 位, 16 位, 32 位 和 64 位的無符號整數形式。
複製代碼
整數範圍:
能夠經過 min 和 max 屬性來訪問每一個整數類型的最小值和最大值:
let minValue = UInt8.min // 最小值是 0, 值的類型是 UInt8
let maxValue = UInt8.max // 最大值是 255, 值得類型是 UInt8
複製代碼
注意事項:
Double 有至少 15 位數字的精度,而 Float 的精度只有 6 位。具體使用哪一種浮點類型取決於代碼須要處理的值範圍。在兩種類型均可以的狀況下,推薦使用 Double 類型。
複製代碼
Bool,兩個布爾常量:true、false
代碼示例:
//寫法1:常量
let a:Int = 10
//寫法2:swift會進行類型推斷,能夠省略
let b = 12
//寫法3:變量,能夠修改值
var c = 20
c = 25
let d:Float = 3.14 //指定Float類型
let e = 3.15 //默認Double類型
var f = 3.16 //默認Double類型
f = 3.17
複製代碼
所謂字面量,就是指像特定的數字,字符串或者是布爾值這樣,可以直接了當地指出本身的類型併爲變量進行賦值的值。好比:
let aNumber = 3 //整型字面量
let aString = "Hello" //字符串字面量
let aBool = true //布爾值字面量
複製代碼
整型字面量能夠是一個十進制、二進制、八進制、十六進制常量
如下都是17的不一樣進製表示:
//十進制
let decimalInteger = 17
//二進制,前綴:0b
let binaryInteger = 0b10001
//八進制,前綴:0o
let octalInteger = 0o21
// 16進制,前綴:0x
let hexadecimalInteger = 0x11
複製代碼
組成:整數部分、小數點、小數部分、指數部分 默認是10進制,也能夠用16進制(加前綴0x)
10進制和exp指數
十進制數與 exp 的指數,結果就等於基數乘以 10exp:
1.25e2 意味着 1.25 x 10^2, 或者 125.0
1.25e-2 意味着 1.25 x 10^-2, 或者 0.0125
複製代碼
16進制和exp指數
十六進制數與 exp 指數,結果就等於基數乘以2exp:
0xFp2 意味着 15 x 2^2, 或者 60.0 .
0xFp-2 意味着 15 x 2^-2, 或者 3.75 .
複製代碼
以12.1875爲例
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0
複製代碼
數值類型的字面量,能夠添加 0 或者 _ 來增長可讀性
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1
複製代碼
字符串型字面量中不能包含未轉義的雙引號 (")、未轉義的反斜線(\)、回車符或換行符。
布爾型字面量的默認類型是 Bool。布爾值字面量有三個值,它們是 Swift 的保留關鍵字:
true 表示真。
false 表示假。
nil 表示沒有值。
複製代碼
let a : Int = 10
let a = 10
let _a = 10
let view : UIView = UIView()
複製代碼
指針不能夠再指向其餘對象
,可是能夠經過指針拿到對象,修改其中的屬性
var _a = "hello"
var b = "hello"
var B = "hello"
var 你好 = "hello"
複製代碼
print(_a)
print(b)
print(你好)
print(_a,b,你好)
print("見面要說\(_a)")
複製代碼
var
去引用一個類, 也沒有必要這裏只說一個不太常見的:
===
和 !==
:測試一個實例的運行時類型和它的編譯時類型是否一致if someInstance.dynamicType === someInstance.self {
print("The dynamic and static type of someInstance are the same")
} else {
print("The dynamic and static type of someInstance are different")
}
複製代碼