-
18_03、OC到Swift(三)
目录 多线程开发 – 异步 多线程开发 – 加锁]多线程开发 – 加锁/** 多线程开发 – once dispatch_once在Swift中已被废弃, 取而代之 可以用 类型属性 或者 全局变量\常量(只初始化一次) 默认自带 lazy + dispatch_once 效果 *///全局常量,只初始化一次,只赋值一次,只在使用时才初始化(lazy)fileprivate let initTask2: Void = { print("initTask2---------")...…
-
18_02、OC到Swift(二)
目录 选择器的用法 string 的用法 可选协议 dynamic kvc kvo 关联对象(Associated Object) 资源名管理]选择器的用法//一、选择器的用法func selectorUse() -> Void { /** 选择器(Selector) n wift中依然可以使用选择器,使用#selector(name)定义一个选择器 必须是被@objcMembers或@objc修饰的方法才可以定义选择器 */ ...…
-
18_01、OC到Swift(一)
目录 mark标记 条件编译 系统版本检测 swift调用oc oc调用Swiftmark标记/// 一、mark标记func markUse() -> Void { //MARK: - test方法 //MARK: test1 //MARK: test1 //MARK: - 测试方法 //TODO:标记未完成任务 //FIXME:待修复问题 //警告 可用于标记未完成 #warning("undo") ...…
-
17_02、字面量、模式匹配(二)
目录 模式匹配 通配符模式 标识符模式 值绑定模式 元组模式 枚举Case模式 可选模式 类型转换模式 表达式模式 where模式匹配//一、模式匹配func patternUse() -> Void { /** 什么是模式? 模式是用于匹配的规则,比如switch的case、捕捉错误的catch、if\guard\while\for语句的条件等 Swift中的模式有 通配符模式(Wildcard Pattern) ...…
-
17_01、字面量、模式匹配(一)
目录 字面量 字面量协议 字面量协议应用字面量//一、字面量func literalUse() -> Void { //1、字面量 do{ print("--------1------") //代码中的10、false、"Jack"就是字面量 var age = 10 var isRed = false var name = "Jack" } //2、字面量 do...…
-
16、内存访问冲突、指针
目录 do的用法 内存访问冲突 指针的应用示例 获得指针 创建指针 交换指针类型do的用法//一、do的用法func doUse() -> Void { //局部作用域 do{ let a:Int = 10 let b:Int = 11 print(a,b) } //局部作用域 do{ let a:Int = 10 let b:Int = 11 pri...…
-
15_02、访问控制、内存管理(二)
目录 内存管理 逃逸闭包访问控制//一、内存管理func memoryManager(){ //一、引用问题 do{ print("----------1-------") /** 跟OC一样,Swift也是采取基于引用计数的ARC内存管理方案(针对堆空间) Swift的ARC中有3种引用: 1、强引用(strong reference):默认情况下,引用...…
-
15_01、访问控制、内存管理(一)
目录 访问控制 将方法赋值给let/var访问控制/** 模块:指的是独立的代码单元,框架或应用程序会作为一个独立的模块来构建和发布。在 Swift 中,一个模块可以使用 import 关键字导入另外一个模块 在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高到低排列, 实体指被访问级别修饰的内容) open:允许在定义实体的模块、其他模块中访问,允许其他模块进行继承、重写(open只能用在类、类成员上) public:允许在定义实体的模块、其他模块中访问,不允许其他模...…
-
14_2、可选项本质、运算符重载、扩展(二)
目录 comparable协议的使用 自定义运算符使用 extension的使用comparable协议的使用/// 一、comparable协议的使用struct Student : Comparable { /** score大的比较大,若score相等,age小的比较大 要想比较2个实例的大小,一般做法是: 遵守 Comparable 协议 重载相应的运算符 */ var age: Int var score: Int ...…
-
14_1、可选项本质、运算符重载、扩展(一)
目录 可选项的本质 多重可选项的本质 多重可选项的本质2 溢出运算符 重载运算符 Equatable的用法可选项的本质/// 一、可选项的本质func optionalNature() -> Void { //1、可选项的本质是enum do{ print("-------1----------") /** 可选项的本质是enum类型 public enum Optional<Wrapped&g...…
-
13、String、Array分析
目录 字符串分析 数组分析 补充内容字符串分析/// 一、字符串分析func stringAnaly(){ //1、长度小于等于15的字符串存储于str的内存中 do{ print("-------1-------") var str:String = "0123456789ABCDE" print(Mems.size(ofVal: &str)) //16 print(Mems.ptr(ofVal:...…
-
12_02、泛型
目录 泛型使用 泛型使用2 关联类型使用 some的使用泛型使用/// 一、泛型使用func genericsUse() -> Void { //1、 相同逻辑不同类型 需要写两个方法 do{ print("--------1---------") var num1 = 10 var num2 = 20 func swapInt(_ num1:inout Int, _ num2:inout Int){...…
-
12_01、error处理
目录 错误分析 rethrows defer的用法 assert的使用 fatalErro的使用错误分析一、使用方式如果函数内有throw,函数声明必须使用throws关键字声明,也就是说 thorw 和 throws 必须同时使用。 func readFile(at path: String) throws -> String { guard path != "" else { throw FileError.fileNotFou...…
-
11、可选链、协议、元数据
目录 可选链 协议的使用1 协议的使用2 class static 协议的使用3 mutating 协议使用4 init 协议的使用5 init? init! 协议的继承 系统提供的协议介绍 any和anyObject 其它总结 元数据的应用可选链/// 零、可选链func optionalChain() -> Void { class Car { var price = 0 } class Dog { var weight = 0 } ...…
-
10_2、初始化器(二)
目录 required的用法 属性观察器 可失败初始化器 反初始化器调用required的用法/// 一、required的用法func requiredUse() -> Void { /** 用required修饰指定初始化器,表明其所有子类必须都实现该初始化器(通过继承或重写) 如果子类重写该初始化器必须加上required,不用加override */ class Person{ var age:Int ...…
-
10_1、初始化器(一)
目录 多态分析 初始化器分类 初始化器使用注意 自动继承初始化器多态分析/// 一、多态分析func PolymorphismAnaly(){ class Animal{ func speak () -> Void { print("Animal speak") } func eat() -> Void { print("Animal eat") }...…
-
9_2、方法、下标、继承(二)
目录 下标使用 继承的使用 重写 为父类添加属性观察器 final使用下标使用/// 一、下标使用func subscriptUse(){ //1、下标使用 do{ print("-------1----------") class Point{ var x=0,y=0 static var z = 0 subscript(index:Int)...…
-
9_1、方法、下标、继承(一)
目录 实例方法 类型方法 mutating的用法 discardableResult的使用 汇总 结构体 类 枚举实例方法 类型方法func functionExplain(){ /** 枚举、结构体、类都可以定义实例方法、类型方法 实例方法(Instance Method):通过实例对象调用 类型方法(Type Method):通过类型调用,用static或者class关键字定义 self的作用 ...…
-
8_2、属性(二)
目录 inout的本质 属性分类inout的本质func inoutAssemblyAnaly() -> Void { struct Shape{ var width:Int var side:Int{ willSet{ print("willSetSide",newValue) } didSet{ print("...…
-
8_1、属性(一)
目录 实例说明 存储属性 计算属性 rawValue的本质是 延迟存储属性 属性观察器实例说明func instanceExplain(){ //枚举 enum Season{ case spring,summer,autumn,winter } let s = Season.spring //结构体 struct Point{ var x:Int = 0 var y:...…