最近在学习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")
}
复制代码