创建变量代码 }()
= 后面是一个闭包 苹果推荐用闭包来实现懒加载,可在闭包中对变量属性进行初始化
2.2 懒加载的使用
1 lazy var names : [String] = {
2 return ["why", "yz", "lmj"]
3 }()
当执行到上面代码的时候,names不会被加载到内存中, 当names第一次使用时,才会被加载
无论names使用多少次,只会被加载一次,也就是说内存中只有一个names属性地址
七.swift中的常见注释
1.单行注释
和OC中的单行注释一样 使用 // 注释内容
2.多行注释
和OC中的多行注释格式一样 /* 注释内容 */
不同的是,swift中多行注释可以嵌套使用
3.文档注释
与oc中不一样 , swift中 用 /// 注释内容 来实现文档注释
4.分组注释
和oc不一样 oc: #pragma mark - 注释内容
swift: //MARK : - 注释内容
八.访问权限
1.internal :内部的
1.1 当不指定具体的访问权限时,默认为internal
1.2 internal的访问权限: 在当前项目(包)的任何地方都能访问
2.private : 私有的
private的访问权限: 在当前源文件中能够访问 一个 .swift文件就是一个源文件
3.public :公共的
3.1 public的访问权限 : 可以跨包访问
3.2 包的概念: 就是一个项目或一个框架 UIKit也是一个框架
九.异常处理
1.在swift中,如果一个方法的最后有一个throws,那么这个方法能抛出异常
正则表达式就能抛出异常:
NSRegularExpression(pattern: <#T##String#>, options: <#T##NSRegularExpressionOptions#>)
2.如果一个方法抛出异常,必须要对异常进行处理,否则编译报错
3.异常处理的三种方式
3.1 try : 手动处理异常,可以拿到异常(error)
要在方法前面加上try 而且外面要用do 包装
//try方式 --> 手动处理异常, 并且可以获取到最终的异常结果
do { //如果有异常error有值
let regex = try NSRegularExpression(pattern: "", options: .CaseInsensitive)
} catch { //通过error拿到异常结果
print(error)
}
3.2 try? : 系统处理异常
try?方式 : 如果有异常,则返回nil,如果没有异常,则返回结果 结果(regex)为可选类型
let regex = try? NSRegularExpression(pattern: "", options: .CaseInsensitive)
regex?.matchesInString("", options: [], range: NSMakeRange(0, 0))
3.3 try! :告诉系统不可能有异常
try!方式(不推荐) 注意:一旦发生异常,程序就会崩溃
let regex = try! NSRegularExpression(pattern: "", options: .CaseInsensitive)
十.如何抛出异常
1.在方法参数的后面加上 throws ,一定要有返回值
2.在某些具体的情况下抛出异常
比如:传的参数不对等等 ,内部要对参数进行判断
3.抛出的异常,一般定义为枚举类型 枚举后面要跟上 ErrorType 这种类型
十一.OC和swift相互调用
1.swift中调用oc
1.1 创建一个桥接文件 (.h的文件) 文件名一般为 Bridge.h
1.2 在桥接文件中导入oc的头文件
1.3 配置桥接文件 工程 —> BuildSetting —> 搜索bridging 在后面写入Bridge.h 的相对路径
2.oc中调用swift
2.1 项目名称要规范 (不能有中文和特殊字符)