![](https://img-blog.csdnimg.cn/6ec990d5bb0c4886b1b3d1e15a1d7e2c.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Swift知识小集
文章平均质量分 79
Swift 知识小集
ReyZhang
专注移动ios平台的软件开发,多年的一线研发经验,实战经验丰富,只为你呈现有价值的信息。据说关注我的人,都薪资翻倍了[笑脸]
展开
-
Swift 最佳实践之 Property Wrapper
如上介绍的 RGBValue,日常开发中有很多值有有效取值区间,如:RGB、age、 weekday、fps 等。关于 Property Wrapper 的应用,「只有想不到,没有做不到」,是一个充满想象力和创造力的地方!通过 Property Wrapper 可以很好地将这些逻辑封装起来,极大简化了业务上的处理。合理的封装 Property Wrapper ,可以提升代码的复用性,以及简化业务使用。如上,定义了一个最简单的 Property Wrapper。转载 2023-06-05 11:58:27 · 455 阅读 · 0 评论 -
理解Swift中的 some 不透明返回类型
为什么SwiftUI的返回类型?some View?为什么不能只返回常规协议?什么是不透明类型?不透明返回类型是Swift 5.1中添加的一项功能,它是新SwiftUI框架功能的重要组成部分。它最终解决了协议使用和Swift API设计的基本问题,为创建和使用公共API开辟了新的可能性。转载 2023-05-29 11:28:04 · 649 阅读 · 0 评论 -
Swift 中使用嵌套结构体定义一组相关的常量
在swift中可以使用let 来定义全局常量 。 有些常量可能是相关的或一类的。对于这些常量我们想统一组织起来, 这里使用嵌套结构体来完成这种组织///配置struct Configs { ///App相关 struct App { static let githubUrl = "https://github.com/khoren93/SwiftHub" static let githubScope = "user+repo+notifications+原创 2022-04-12 10:05:02 · 331 阅读 · 0 评论 -
Swift Type-Erased(类型擦除)
前言泛型编程对现代软件开发有着不可忽视的作用,我们希望在 protocol 中加入 associated types ,但是令人不愉快的是编译器似乎总是闹别扭。 在 swift 中 类型擦除 是一种不错地将 associated types 转化为 generic constraints 的方法。面向协议的编程在 swift 中是非常提倡的对吧? 我的意思是甚至是在 WWDC 会议期间,人们呐喊出:“Protocols are awesome!”。他们让你定义接口,允许你忽略那些接口的实现。在 Swif转载 2022-04-09 21:38:27 · 784 阅读 · 0 评论 -
Swift中的weak和unowned关键字
Swift中没有了strong, assign, copy属性修饰符,对于所有的class类型变量都默认采用了strong类型,如果需要指定使用weak,则需要添加weak关键字修饰。正是由于这种默认的strong类型,在闭包中会引起循环引用,导致内存无法释放,为了能够在闭包(block)中正常释放内存,需要对闭包中的self使用弱引用,也就是不持有self对象。如下面的代码中:class UserInfoViewController { // ... private lazy var转载 2022-04-09 21:12:11 · 697 阅读 · 0 评论 -
Swift 中的错误处理
前言将可能遇到的异常尽可能扼杀在编译期是 Swift 在安全性上至始至终贯彻的理念,本文接下来将讨论Swift中是如何进行错误处理的 (Error Handling)。错误(Error)可以简单的将错误划分为编译错误、逻辑错误以及运行时错误编译错误let a = 10a = 20 // 编译器报错: Cannot assign to value: 'a' is a 'let' constantfunc name(v: Int) -> Int { return "hello"转载 2022-04-07 11:17:06 · 964 阅读 · 0 评论 -
Swift中的Result 类型的简单介绍
Swift 5引入了一个新的Result类型, 它使用枚举来处理异步函数的结果。苹果文档对该类型的描述:A value that represents either a success or a failure, including an associated value in each case.声明:@frozen enum Result<Success, Failure> where Failure : Error在Result类型出现之前,我们创建异步函数返回结果的方式:原创 2022-04-07 09:39:18 · 860 阅读 · 0 评论 -
Swift Combine 入门导读
前言WWDC 2019 毫无疑问是近年来最好的一届。Apple 为了拉拢开发者做出了很多努力,从史上最强工作站 Mac Pro, 到更方便的平台互通 Project Catalyst,再到现代化的界面语言 SwiftUI,当然,以及本文将要介绍的基于 Swift 的 Combine 框架。在具体介绍 Combine 之前,有两个重要的概念需要简要介绍一下:观察者模式响应式编程观察者模式观察者模式(Observer Pattern)是一种设计模式,用来描述一对多关系:一个对象发生改变时将自动通转载 2022-04-06 15:17:57 · 2903 阅读 · 4 评论 -
使用RxSwift处理网络串行请求及并行请求
前言ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。RxSwift 是 Rx 的 Swift 版本。将KVO,异步操作 和 流 全部被统一成抽象序列什么要使用 RxSwift ?复合 - Rx 就是复合的代名词复用 - 因为它易复合清晰 - 因为声明都是不可变更的易用 - 因为它抽象了异步编程,使我们统一了代码风格稳定 - 因为 Rx 是完全通过单元测试的RxSwift 能够帮助我们做些什么:Target Action传统实现方法:button.add转载 2022-01-11 11:15:19 · 2816 阅读 · 2 评论 -
RxSwift 入坑手册 - 基础概念
https://blog.callmewhy.com/post/rxswift-getting-started-0/#combining前言RxSwift 是我在 Github 上关注已久的一个项目,今天花点时间过了一下它的示例代码,感觉很有意思。我主要是通过项目里的 Rx.playground 进行学习和了解的,这种方式确实便捷高效。只需要把文档用/*: */注释即可,直接用 Markdown编写,简单方便。不过 Xcode7 中这种方式现在还不是很稳定,会有大量的空行,而且有个最大的问题就是阅读到转载 2022-01-04 11:55:26 · 828 阅读 · 0 评论 -
Swift开发小记(含面试题)
春节前后一直在忙晋升的事情,整理了下之前记录的Swift知识点,同时在网上看到的一些有意思的面试题我也加了进来,有的题目我稍微变了下,感觉会更有趣,当然老规矩所有代码在整理时都重新跑了一遍确认~另外后续文章的更新频率加快,除了iOS开发上的一些文章,也会增加一些跨平台、前端、算法等文章,也算是对自己技术栈的回顾吧声明let和varlet用来声明常量,var用来声明变量。了解js的对于这两个应该不陌生,但是区别还是挺大的,尤其是let,在js中是用来声明变量的,const才是用来声明常量的。..转载 2021-12-18 11:46:45 · 450 阅读 · 0 评论 -
Swift 泛型详解
泛型在开发中的使用场景主要在以下几方面:泛型函数泛型类泛型约束泛型下标A. 泛型函数泛型函数指的是:函数的参数或返回值类型使用泛型,而不是具体的类型泛型函数的格式:func 函数名<泛型1, 泛型2, …>(形参1, 形参2, ...) -> 返回类型 { 函数体}需求:实现Swift高阶函数reduce功能的一个函数func myReduce<T, U>(arr: [T], initialValue: U, partialResult:转载 2021-11-25 16:34:36 · 5335 阅读 · 0 评论 -
Swift 的枚举、结构体和类详解
简单说明Swift 三个卖点就是安全, 速度和简洁。 安全意味着很难写出质量很差,导致内存崩溃的代码和极其难以找到的bug. Swift 可以确保你的工作是安全的,因为它会在编译器提示你有问题,而不是在运行期再报错。 此外, 由于 Swift 允许你清晰表达意图, 优化器会让你的代码运行的飞快。 Swift 语言核心是简单和高度规则化, 是因为它建立在一些令人惊奇的概念上。尽管是一些相对简单的规则, 你还是可以做一些精彩的事情。 所有这一切的关键是 Swift 的类型系统:Swift 类型是强而有力的转载 2021-11-24 12:01:22 · 512 阅读 · 0 评论 -
Swift属性的包装器@PropertyWrapper
本文概述旧方法新方法:@propertyWrapper注解可配置包装器自行访问包装器投影值局限性结论简而言之, 属性包装器是一种通用结构, 它封装了对该属性的读写访问, 并为其添加了其他行为。如果需要限制可用的属性值, 向读/写访问添加额外的逻辑(例如使用数据库或用户默认值)或添加一些其他方法, 则可以使用它。本文介绍了一种新的Swift 5.1包装属性的方法, 该方法引入了一种更简洁的新语法。旧方法假设你正在开发应用程序, 并且有一个包含用户配置文件数据的对象。struct A转载 2021-11-23 16:03:00 · 1886 阅读 · 0 评论 -
理解 Swift 中的元类型:.Type 与 .self
元类型元类型就是类型的类型。比如我们说 5 是 Int 类型,此时 5 是 Int 类型的一个值。但是如果我问 Int 类型占用多少内存空间,这个时候与具体某个值无关,而和类型的信息相关。如果要写一个函数,返回一个类型的实例内存空间大小。那么这个时候的参数是一个类型数据,这个类型数据可以是直接说明的比如是 Int 类型,也可以从一个值身上取,比如 5 这个值的类型。这里的类型数据,就是一个类型的类型,术语表述为元类型:metaType。.Type 与 .selfSwift 中的元类型用 .Type转载 2021-11-17 14:32:53 · 1276 阅读 · 0 评论