发布了文章2022-06-30
标准库中提供的所有的基本集合类型都是值类型,通过写时复制的思想保证了他的高效性。集合类型是我们比较常用到的数据类型,所以了解他的性能特性很重要,我们来一起看一下写时复制是如何工作的,并且尝试自己手动实现一个。
发布了文章2022-06-27
由于 any 和 some 都适用于协议,因此我想在这篇博文中将它们放在一起比较以便更好地解释它们解决分别解决了什么问题,以及在什么情况下使用 any、some 或其他的。
发布了文章2022-06-02
@inlinable 属性是 Swift 鲜为人知的属性之一。与其他同类一样,它的目的是启用一组特定的微优化,您可以使用它们来提高应用程序的性能。让我们来看看这个是如何工作的。
发布了文章2022-05-09
信号量是一个非负变量, 并且在线程之间共享。信号量是一种信号机制,一个线程正在等待信号量可以由另一个线程发出。它使用两个原子操作,1)wait和 2)signal实现线程同步。
发布了文章2021-12-14
AES, 高级加密标准, 是采用区块加密的一种标准, 又称Rijndael加密法. 严格上来讲, AES和Rijndael又不是完全一样, AES的区块长度固定为128比特, 秘钥长度可以是128, 192或者256. Rijndael加密法可以支持更大范围的区块和密钥长度, Rijndael使用的密钥和区块长度均可以...
发布了文章2021-12-10
最近修改了项目中的视频播放功能, 由之前的全量下载完再播, 改为了边下边播的方式. 由于我们项目中的视频在发出时都进行了加密, 所以整个过程其实就是边下载边解密边播放.
提出了问题2020-11-05
提出了问题2020-11-05
发布了文章2020-09-26
前言之前我们聊过了,在Category中声明一个属性,可以自己手动实现set和get方法,但是因为没有成员变量,所以说并不能储值。我们可以通过runtime的api实现让成员变量可以储值,其实本质也并不是储存,而是通过关联对象实现了这种看似是可以储值的效果。我们可以用下...
回答了问题2020-09-25
dog属性声明为了atomic类型,为了保证原子性,dog的set和get方法应该做过处理。我感觉mrc下的atomic属性的set和get方法应该类似下面这样实现。
发布了文章2020-09-24
今天我们简单聊一下KVC,键值编码。平时我们给属性赋值或者取值都是使用点语法,调用属性的set或者get方法,除此之外苹果还为我们提供另一种方法,使用key或者可以keyPath赋值或者取值。
发布了文章2020-09-14
我们在Category中,可以直接添加方法,而且我们也都知道,添加的方法会合并到本类当中,同时我们也可以声明属性,但是此时的属性没有功能,也就是不能存值,这就类似于Swift中的计算属性,如果我们想让这个属性可以储存值,就要用runtime的方式,动态的添加。
发布了文章2020-09-08
最近打算重新梳理一遍iOS底层的知识,尽量把所有的底层知识点都搞懂搞透彻,碍于iOS不开源,有很多东西并不能很直观的去学习,所以可能有瑕疵,希望大家可以理解,并一起交流,笔者也尽可能做到尽善尽美吧。
发布了文章2020-09-07
最近公司需要我们使用XMPP协议,实现一个简单的IM模块。在此之前没有接触过IM相关技术,仅了解iOS可以通过集成XMPPFramework来快速的实现某些需求。本系列文章旨在记录使用XMPPFramework过程中遇到的问题。
发布了文章2020-08-18
我们可以看到,在我们创建一个枚举值t的时候,设置他的选项为test1,同时可以关联3个Int类型的值,然后在switch中,我们还可以把这3个Int值取出来进行使用。
发布了文章2020-03-22
最近工作中用到了加密相关的技术点,非常头疼,常被公钥加密、签名等一系列概念搞的头大,所以买来《图解密码技术》这本书,想大概的梳理一下密码技术的入门知识。
发布了文章2019-12-25
在公司把cocoapods升级到1.8.3版本之后,开始出现了问题,pod install和pod search都失效。 执行pod install 之后,会一直卡在 {代码...} 然后更新到cocoapods1.8.4, 问题依然存在。 超时之后,会提示下面的错误 {代码...} 按照网上找到的教程,在podfile文件第一行...
发布了文章2019-05-23
简单说,就是在不影响我们现在正常业务的情况下,对某些类的某些方法嵌入操作。我们可以很通俗的理解一个方法可以有方法前和方法后这两个切面,当然还可以把方法执行过程看过一个整的切面去hook。
发布了文章2019-05-16
Method Swizzling已经被聊烂了,都知道这是Objective-C的黑魔法,可以交换两个方法的实现。今天我也来聊一下Method Swizzling。
发布了文章2019-04-28
大神们讨论具体的实施方案,是对理论的描述,在架构层面来分析利弊,我看过之后感觉还是有点晦涩,具体的方案异同之处我们先不说,今天我们先从应用着手,在自己当前的工程实施组件化。