![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift
Developer_mk_iOS
iOS开发
展开
-
swift基础类型
1.数值类型 Int,Float 表示 //数值型字面量//整数字面量 使用十进制 二进制 八进制 十六进制 表示同一个数 let decimalInteger = 17 let binaryInteger = 0b10001 let octalInteger = 0o21 let hexadecimalInteger = 0x11 //...原创 2018-11-13 11:03:58 · 89 阅读 · 0 评论 -
Swift 指针
1.1 swift中使用UnsafePoint结构体代替直接操作指针。通过pointee访问其引用的数据。ex-1.1 : var m = "12" let pointer = withUnsafePointer(to: &m) { (pointer) -> UnsafePointer<String> in ...原创 2018-12-13 16:29:38 · 143 阅读 · 0 评论 -
Swift 方法调度探究
1.方法调度分类1.1 方法调度可以分为静态调度(static dispatch)和动态调度,动态调度从实现上来说又可以划分为虚拟表也就是Table dispatch比如c++和消息分发message dispatch比如OC用到的就是消息分发机制。1.2静态调度和动态调度各有各的好处1.2.1编译器可以对静态调度的方法进行包括inline内联函数在内的编译期优化以及加快程序运行速度。...原创 2018-12-08 12:34:40 · 322 阅读 · 0 评论 -
结构体和类
1 结构体和类共同点1.1 定义存储属性和方法1.2 定义subscript1.3 定义初始化方法1.4 增加类扩展1.5 遵循某个协议 2 类比结构体增加的特性2.1 继承特性2.2 type casting 类型描述2.3 Deinitializers2.4 引用计数机制 3 swift中的两种类型 值类型和引用类型3.1值类型在使用的时...原创 2018-11-14 16:21:27 · 91 阅读 · 0 评论 -
枚举
1 基本形式 enum CompassPoint { case north case south case west case east } var direction = CompassPoint.east 2 枚举结合switch使用 switch direction {...原创 2018-11-13 11:13:35 · 71 阅读 · 0 评论 -
闭包
1 swift中闭包的一般形式 { (参数) ->返回值类型 in 闭包内容 } 2 参数类型 闭包中的参数可以是 inout类型的,可以使用可变参数(…),元组可以被作为参数和返回值类型 但不可以有默认值 3 从上下文中进行类型推断 当block被作为参数传递到函数或者是方法中由于类型推断参数和返回值类型 可以 省去...原创 2018-11-13 11:11:59 · 73 阅读 · 0 评论 -
函数
1 函数返回值可以是元组,返回多个不同类型的值 2 函数参数标签 一般情况下每一个函数参数都有一个函数名称和函数标签 1.函数标签(label)在函数被调用时候使用 函数名称(name)在函数体内部使用 2.默认情况下 参数名称被作为参数函数参数的标签 3.可以给参数指定参数标签 4.可以给参数忽略参数标签(_) 5.如果给一个参数设置了参数标签,在调用时候必...原创 2018-11-13 11:10:36 · 72 阅读 · 0 评论 -
控制流
1 for in 和c用法一致特殊:for tickMark in stride(from: 0, to: 12, by: Interval) { print(tickMark)}for tickMark in stride(from: 0, through: 12, by: Interval) { print(tickMark)}...原创 2018-11-13 11:08:22 · 57 阅读 · 0 评论 -
集合类型 数组 字典 集合
数组1 数组字面量let shopList = ["apple","orange”]2 创建数组方式1 var array:Array<Int> = Array()3 创建数组方式2 文档推荐使用 var shordhandArray = [Int]()4 如果在上下文中数组已经知道类型 可以直接使用 [] 创建 ...原创 2018-11-13 11:06:57 · 266 阅读 · 0 评论 -
字符串与字符
字符 let exclamationMark: Character = “!" 字符串 1 初始化空字符串var initString = “"var initString2 = String() 2 判断字符串是否为空方法 if initString.isEmpty { print("字符串为空")} ...原创 2018-11-13 11:06:23 · 82 阅读 · 0 评论 -
运算符
1 赋值运算符 赋值运算(a = b),表示用b的值来初始化或更新a的值 如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量 let (x, y) = (1, 2) 与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值 2 算数运算符Swift 默认情况下不允许在数值运算中出现溢出情况 3 空合运...原创 2018-11-13 11:05:46 · 94 阅读 · 0 评论 -
错误处理
如果某些函数在运行期可能会出现错误,可以使用错误处理机制 1.func canThrowAnError() throws { }func arrayElementForIndex(array:Array<Int>,index:Int)throws ->Int { return array.index(before: index)} d...原创 2018-11-13 11:05:02 · 57 阅读 · 0 评论 -
Swift内存布局以及HandyJSON
1 内存分区在一个进程在执行过程中操作系统会为其分配一块儿内存,为了更好的管理这块分配的内存。通常会把其划分为栈区,静态区,堆区。这里不在说明各个区的差别。2 swift 内存管理swift中值类型包括数值类型(Int,float),集合类型(array,dictionary,set),结构体,枚举的instance通常都是存在栈区的。class类型的instance存储在堆区。堆区的...原创 2018-12-16 14:58:12 · 708 阅读 · 0 评论