开发环境搭建Hello World
安装Xcode
File => New => Playground
import UIKit var str = "Hello World,yahue"
在Playground 就可以看到Hello World,yahue
数据类型
内置类型:
swift内置类型非常丰富,列举几个
int:整型
- 长度和运行平台对应
32位平台=>Init32
64位平台=>Init64 - 长度范围:-2,147,483,648~2,147,483,647
UInt 无符号整型
浮点数
Double
表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
Float
表示32位浮点数。精度要求不高的话可以使用此类型。
Double精确度很高,至少有15位数字,而Float最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
布尔值
Boolean 值有true和false
… 不一一介绍内置类型了
类型别名
对当前类型定义一个别名
如:
import Cocoa
typealias meter = Int
var distance: meter = 10086
print(distance)
在 playground
执行以上程序,输出结果为:
10086
类型安全
swift是个强类型的语言,声明之后不能修改类别
如以下代码:
import Cocoa
var a = 10010
a = "10086"
print(a)
在xcode中会直接提示错误
error: cannot assign value of type 'String' to type 'Int'
a = "10086"
类型申明
类型声明的方式有多重
###var
声明一变量
变量是一种使用方便的占位符,用于引用计算机内存地址。
如代码:
import Cocoa
var var1 = 421
print(var1)
var var2:Float
var2 = 3.1415926
print(var2)
输出:
421
3.1415926
###let
声明一个常量
申明方式和var一样,但是意义不一样
常量一旦设定,在程序运行时就无法改变其值。
可选类型的申明
可选(Optional)类型,用于处理值缺失(值为null)的情况。
申明方式:
var optionalInteger: Int?
var optionalInteger: Optional<Int>
代码示例:
import Cocoa
var vars1:String? = nil
if vars1 != nil {
print(vars1)
}else{
print("字符串为 nil")
}
运行结果:
字符串为 nil
强制获取值:
import Cocoa
var vars1:String? = nil
vars1="hello http://blog.yahui.wang"
print(vars1)
if vars1 != nil {
print(vars1!) //强制获取值
}else{
print("字符串为 nil")
}
执行结果:
Optional("hello http://blog.yahui.wang")
hello http://blog.yahui.wang
自动解析值
!
和?
?
上面我们说到 这两种声明方式是一样的
var optionalInteger: Int?
var optionalInteger: Optional
查看Optional的文档可以知道Optional只是一个枚举
enum Optional
也就是说当你使用var varS: String?
的时候 你是“申明了一个Optional类型值,它可能包含一个String值,也可能什么都不包含”
不要以为是 “我声明了一个Optional的String值”
!
一下代码意义一样
var optionalInteger: Int! //!相当于下面这种写法的语法糖
var optionalInteger: ImplicitlyUnwrappedOptional
Implicitly Unwrapped Optionals, 直译就是隐式拆包的Optional,也就是说每次使用这个值的时候都会自动在变量后面加上个
!
拆包,当值为nil的时候 肯定会报错
那么!
大概也有两种使用场景
1.强制对Optional值进行拆包(unwrap)
2.声明Implicitly Unwrapped Optionals值,一般用于类中的属性
执行流控制
条件语句
if … else
switch
循环
for
for in
while
repeat while
循环控制
continue
break
fallthough
字符串和字符
数组
字典
函数
函数
闭包
枚举
结构体和类
共同点
- 定义属性用于存储值
- 定义方法用于提供功能
- 定义附属脚本用于访问值
- 定义构造器用于生成初始化值
- 通过扩展以增加默认实现的功能
- 符合协议以对某类提供标准功能
类还有如下的附加功能:
- 继承允许一个类继承另一个类的特征
- 类型转换允许在运行时检查和解释一个类实例的类型
- 解构器允许一个类实例释放任何其所被分配的资源
- 引用计数允许对一个类的多次引用
属性
存储属性
延迟存储属性
实例化变量
计算属性和只读计算属性
只有 getter 没有 setter 的计算属性就是只读计算属性。
属性观察器
全局变量和局部变量
类型属性
获取和设置类型属性的值
方法
下标脚本
继承
构造过程和拆构过程
构造过程是类初始化
拆构过程是类被释放时执行