万字长文详解如何使用Swift提高代码质量
京喜APP最早在2019年引入了Swift,使用Swift完成了第一个订单模块的开发。之后一年多我们持续在团队/公司内部推广和普及Swift,目前Swift已经支撑了70%+以上的业务。通过使用Swift提高了团队内同学的开发效率,同时也带来了质量的提升,目前来自Swift的Crash的占比不到1%... ... »
京喜APP最早在2019年引入了Swift,使用Swift完成了第一个订单模块的开发。之后一年多我们持续在团队/公司内部推广和普及Swift,目前Swift已经支撑了70%+以上的业务。通过使用Swift提高了团队内同学的开发效率,同时也带来了质量的提升,目前来自Swift的Crash的占比不到1%... ... »
WisdomProtocol 面向协议编程(下) @[TOC] WisdomProtocol SDK 面向协议编程 # Welcome to use WisdomProtocol WisdomProtocol is a Protocol of wisdom sdk. **github install ... »
Swift下将网络返回json数据转换成struct 假如网络请求返回的数据结构是一个深层嵌套的Json 首先要通过key-value取出这个json中的数据源 // 将返回的json字符串转Dictory let json = """ { "name": "jack", "age": 20, "d ... »
Codable 是 Swift 4.0 引入的一种协议,它是一个组合协议,由 Decodable 和 Encodable 两个协议组成。它的作用是将模型对象转换为 JSON 或者是其它的数据格式,也可以反过来将 JSON 数据转换为模型对象。 ... »
一、前言 先看一下Swift标准库中对CustomStringConvertible协议的定义 public protocol CustomStringConvertible { /// A textual representation of this instance. /// /// Calli ... »
目录 什么是Opaque Types 如何使用 为什么要使用 可读性更强 性能更好 使用的限制 总结 什么是Opaque Types Opaque Types 是在 Swift5.7 新添加的一个特性。主要是和 Protocol 来搭配使用,用来定义函数中的参数类型。它的作用就是 »
随着Swift的日渐成熟和给开发过程带来的便利性及安全性,京喜App中的原生业务模块和基础模块使用Swift开发占比逐渐增高。本次讨论的是struct对比Class的一些优劣势,重点分析对包体积带来的影响及规避措施。 ... »
要求:iOS13.0以上 重点:需要所有界面进行适配,工作量巨大,需要从项目开始就进行适配;H5界面无法进行适配 实现方式:System Colors(常用)、Semantic Colors(常用)、Dynamic Colors(常用)、Asset Catalog、Border colors、Dyn ... »
目录 高阶函数的作用 1. 简化代码 2. 提高可读性 3. 支持函数式编程 4. 提高代码的可重用性 常见的高阶函数 1. map() 2. filter() 3. reduce() 4. sorted() 5. forEach() 6. compactMap() 7. flatMap() »
目录 为什么需要Optional 什么是Optional Optional实现原理 Optional的解包方式 1. 可选项绑定(Optional Binding) 2. 强制解包(Forced Unwrapping) 3. 隐式解包(Implicitly Unwrapped Optionals »
目录 为什么需要Optional 什么是Optional Optional实现原理 Optional的解包方式 1. 可选项绑定(Optional Binding) 2. 强制解包(Forced Unwrapping) 3. 隐式解包(Implicitly Unwrapped Optionals »
代理模式(Proxy Pattern)是一种结构型设计模式,结构型模式描述如何将类或对象按某种布局组成更大的结构。它允许你提供一个代理对象来控制对另一个对象的访问。代理对象拥有与实际对象相同的接口,因此它可以被用来代替实际对象。 ... »
在swift中 如果我们要定义一个表示错误类型非常简单,只要遵循Error协议就可以了,我们通常用枚举或者结构体来表示错误类型,枚举可能用的多些,因为他能更直观的表达当前错误类型的每种错误细节。 // // AboutError.swift // learn_swiftUi // // »
在swift中 如果我们要定义一个表示错误类型非常简单,只要遵循Error协议就可以了,我们通常用枚举或者结构体来表示错误类型,枚举可能用的多些,因为他能更直观的表达当前错误类型的每种错误细节。 // // AboutError.swift // learn_swiftUi // // »
目录 创建 Package 使用 Package 维护 Package 版本控制 本地调试修改 Package 之间的依赖 混编问题 target 拆分 引用以及和 cocoapods 的兼容问题 创建 Package mkdir somePath cd somePath »
目录 创建 Package 使用 Package 维护 Package 版本控制 本地调试修改 Package 之间的依赖 混编问题 target 拆分 引用以及和 cocoapods 的兼容问题 创建 Package mkdir somePath cd somePath »
目录 一、思路来源 二、示例 三、源码 四、总结 一、思路来源 最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右边的值赋给左边,然后返回左边的变量值;常用于避免多次赋值的情况;发现非常实用,于是给 swift 也自定义一个使用,最终 »
目录 一、思路来源 二、基础类型 String 为例 重载乘法运算符 源码实现: 三、对象类型 UIEdgeInsets 为例 重载加法运算符将 源码实现: 四、总结 一、思路来源 研究自定义运算符的时候,又重新看了一下重载运算符,觉得挺有意思的,随手封装了几个。 二、基 »
本篇内容主要讲解“Swift Package使用技巧及混编兼容问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Swift Package使用技巧及混编兼容问题怎么解决”吧! 创建 Package mkdir somePath cd someP »
本篇内容主要讲解“Swift Package使用技巧及混编兼容问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Swift Package使用技巧及混编兼容问题怎么解决”吧! 创建 Package mkdir somePath cd someP »