Swift-进阶 14:泛型
本文主要介绍泛型及其底层原理泛型泛型主要用于解决代码的抽象能力 + 代码的复用性例如下面的例子,其中的T就是泛型func test<T>(_ a: T, _ b: T)->Bool{ return a == b } //经典例子swap,使用泛型,可以满足不同类型参数的调用 func swap<T>(_ a: inout T, _ b: inout T){ ...
Swift-进阶 13:协议Protocol
本文主要分析protocol的用法及底层存储结构协议的基本用法【语法格式】:协议的语法格式//协议的语法格式 protocol MyProtocol { //body }class、struct、enum都可以遵守协议,如果需要遵守多个协议,可以使用逗号分隔//1-2、class、struct、enum都可以遵守协议,如果需要遵守多个协议,可以使用逗号分隔 struct CJLTeach...
Swift-进阶 11:访问控制权限
主要介绍swift中的访问控制权限关键字private1、private:访问级别仅在当前定义的作用域内有效(单例中使用过)//8-1、private:访问级别`仅在当前定义的作用域内有效 class CJLTeacher{ static let shareInstance = CJLTeacher() private init(){} } var t = CJLTeacher....

Swift-进阶 10:可选类型Optional & Equatable+Comparable协议
本文主要分析Optional源码、Equatable+Comparable协议Optional分析swift中的可选类型(Optional),用于处理值缺失的情况,有以下两种情况有值,且等于x没有值这点可以通过swift-source->Optional.swift源码(CMD+P,搜索Optional)源码来印证@frozen public enum Optional<Wrappe....

Swift-进阶 09:闭包(二)逃逸闭包 & 非逃逸闭包
本文主要分析逃逸闭包 、非逃逸闭包、自动闭包逃逸闭包 & 非逃逸闭包逃逸闭包定义当闭包作为一个实际参数传递给一个函数时,并且是在函数返回之后调用,我们就说这个闭包逃逸了。当声明一个接受闭包作为形式参数的函数时,可以在形式参数前写@escaping来明确闭包是允许逃逸的如果用@escaping修饰闭包后,我们必须显示的在闭包中使用selfswift3.0之后,系统默认闭包参数就是被@non....

Swift-进阶 09:闭包(一)使用&捕获原理
本文主要分析闭包以及闭包捕获变量的原理闭包闭包是一个捕获了全局上下文的常量或者变量的函数,通俗来讲,闭包可以是常量也可以是函数【全局函数是一种特殊的闭包】:定义一个全局函数,只是当前的全局函数并不捕获值func test(){ print("test") }【函数闭包】:下面的函数是一个闭包,函数中的incrementer是一个内嵌函数,可以从makeIncrementer中捕获变量ru...

Swift-进阶 08:枚举enum
本文主要介绍enum的常见使用形式,以及枚举大小是如何计算的补充:添加脚本自动生成SIL通过target -> +,选择 other -> Aggregate,,然后命名为CJLScript选中CJLScript,选择Build Phases -> New Run Script Phase在Run Script中输入以下命令swiftc -emit-sil ${SRCROOT}....

Swift-进阶 07:Mirror源码解析
本文主要是分析Mirror的底层实现,以及根据Mirror底层原理仿写其结构的实现在Swift-进阶 06:反射Mirror & 错误处理文章中,我们介绍了Mirror的使用,即JSON解析,对此我们有如下一些疑问:1、系统是如何通过Mirror获取对应的属性以及值的?2、Swift众所周知是一门静态语言,系统在底层到底做了什么,使swift具有了反射的特性呢?下面我们来对Mirror的....

Swift-进阶 06:反射Mirror & 错误处理
本文主要介绍Mirror的使用以及使用Mirror进行JSON解析的错误处理反射Mirror反射:是指可以动态获取类型、成员信息,在运行时可以调用方法、属性等行为的特性,在上面的分析中,我们已经知道,对于一个纯swift类来说,并不支持直接像OC runtime那样的操作但是swift标准库依旧提供了反射机制,用来访问成员信息,即Mirror一般使用class CJLTeacher: NSObj....

Swift-进阶 05:内存管理 & Runtime
本文主要介绍swift中的内存管理,涉及引用计数、弱引用、强引用、循环引用、Runtime等内存管理 - 强引用在swift中也是使用ARC来追踪和管理内存的,下面我们通过一个案例来进行分析class CJLTeacher { var age: Int = 18 var name: String = "CJL" } var t = CJLTeacher() var t1 = t ...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
Swift进阶相关内容
开发与运维
集结各类场景实战经验,助你开发运维畅行无忧
+关注