常用排序算法 冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 #冒泡排序的Swift示例: 2018-10-09 其他 #算法
Swift中JSON转model 1.CodebleSwift中,可以使用Codable协议来将JSON转换为model。 1public typealias Codable = Decodable & Encodable Codable 是一个组合协议,由 Decodable 和 Encodable 两个协议组成。作用是将 JSON 转换为 model 对象,也可以反过来将 model 对象转换为 JSON 或其它格式 2018-10-01 Swift #Swift
Swift中的GCD 1.任务在 Swift 中往GCD队列里提交的任务,有两种常见封装方法。 1.闭包12345678910111213141516// GCDlet q1 = DispatchQueue.init(label: "serial") // 默认串行let q2 = DispatchQueue.init(label: "concurrent", attribute 2018-09-25 Swift #Swift
Swift-OC混编 1.混编 Swift 工程中使用 Objective-C 文件; Objective-C 工程中使用 Swift 文件。 本文所用 Xcode 版本:9.4.1 2.Swift中混编OCSwift 工程中使用 OC 文件时需要依赖 桥接头文件 将 OC 中的属性、接口等暴露给 Swift。默认情况下,在 Swift 工程中首次创建 OC 文件时,Xcode 会自动提示你是否创建桥接头文件: 2018-09-20 Swift #Swift
Swift高阶函数 1.map遍历集合并对每个元素执行相同的操作,从而将元素映射成新值并放在数组中返回,新值可以是原类型也可以是新的类型。 对数组 1234//将元素映射成string类型let intArr = [0,1,2]let newArr = intArr.map { "\($0)" }print(newArr) //打印结果:["0", & 2018-09-14 Swift #Swift
Swift-@objc\@objcMember\dynamic 1.@objc将Swift中的元素暴露给OC运行时,以便在OC中调用Swift代码。 常见的,如Swift中给按钮添加点击事件时,需要给selector添加@objc标记。因为SEL是OC运行时中的特性,runtime根据SEL查找函数的实现。要将按钮回调函数暴露给OC运行时,需要将其标记为@objc,从而让OC运行时进行消息派发。 1234567891011class A: UIViewCont 2018-09-05 Swift #Swift
Swift属性监听 1、属性观察器Swift 提供了属性观察器来监听自身存储属性的变化。观察器只能用于监听非lazy存储属性。对于计算属性,它已经内含了get{}和set{},闭包内已经知道属性的变化,不需要再提供观察器。对于从父类继承下来的存储属性或计算属性,我们可以在子类中重写属性的getter和setter来为它们添加属性观察器。 1234567891011121314c 2018-08-31 Swift #Swift
Swift错误处理 1.错误的表示Swift中用实现了Error协议的类型表示错误,通常用枚举来表示一组错误信息。 12345enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock} 2.抛出错误在方法的参数后 2018-08-25 Swift #Swift
Swift类型检查 一、前言作为面向对象的语言,OC 与 Swift 都具有多态性,有时会大量使用类簇,因此描述对象的信息成为了常见需求。 判断对象在继承树上的位置; 判断对象是否遵守了某个协议; 这些都是对象内省能力的一部分,本文将尝试对 OC 和 Swift 中这些场景的实现做一次整理。 二、OC版NSObject协议中提供了诸多内省方法,本文主要讨论以下三个: 12345678//NSObject.h@pr 2018-08-20 Swift #Swift
Swift可选拆包 前言 You use optionals in situations where a value may be absent. An optional represents two possibilities: Either there is a value, and you can unwrap the optional to access that value, or there isn’t 2018-08-18 Swift #Swift