首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS 升级打怪
冯志浩
创建于2021-10-12
订阅专栏
iOS 底层、Swift 进阶、音视频等内容。
等 16 人订阅
共23篇文章
创建于2021-10-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
理解 GCD 中 async 与 sync 的区别
在我们编写 iOS 代码的时候,经常会碰到异步执行的代码。有时你知道你正在编写一些异步执行的代码,有时则直接传递一个 completion handler,这个 handler 可能会也可能不会在不同
如何用 Swift 编写自定义的 LLDB 命令?
对于大多数的 iOS 开发者来说,日常中用到的最多的 LLDB 的命令应该就是 po。但大家可能不知道的是,其实我们可
如何用 Swift 的高阶函数来简化一些复杂代码
在我们的日常开发中,经常会碰到一些复杂的数据操作的需求。这些复杂的需求可能会花费我们半天甚至几天的时间趋势线。 但是
Swift guard 语句的一些个人理解
guard 的中文意思为守卫。顾名思义,它的作用就是用来守卫我们的代码安全的。下面是它的语法:。。。
如何理解 iOS 中的串行队列和并行队列?
在 iOS 中,当我们编写一些耗时较多的任务时,通常的做法是把这些任务放到子线程去执行,来保证 APP 的流畅性。
iOS 升级打怪 - Responder Chain
前言 在 APP 中,为什么我们点击一个 view, iPhone 就能精准的找到我们点击的那个 view?当我们在复杂的页面中进行交互,系统又是如何将我们的点击进行传递的呢?这一切都是背后的 iOS
Swift 枚举中的关联值和原始值以及嵌套枚举
关联值 枚举的关联值使用如下: 在 Swift 的枚举中,关联值是直接存储在枚举对象的内存中的。这个可以通过下面的打印得出: 可以看到 HTTPResult 实际占用的内存为 25个字节,25 = 8
iOS 升级打怪 - RunLoop
RunLoop 是底层架构的一部分,它与线程结合工作。它的目的是为了保证你的线程在有事干的时候做事,没事干的时候休眠。
iOS 升级打怪 - 消息机制
三大流程 在 OC 中给一个对象发送消息时,比如下面的代码: 编译成 C++ 代码可以看到,底层调用的都是objc_msgSend: objc_msgSend 总共有三大步骤,分别为:消息发送、动态解
iOS 升级打怪 - block
block 底层结构 block,在日常开发中经常遇到。常用的使用场景就是用于两个对象之间的交互,比如 vc 之间的传值、网络接口的回调等。 先来一个最简单的例子来看下 block 的底层结构,代码示
iOS 升级打怪 - load 与 initialize
load 该方法会在 runtime 加载类和分类时调用,可以通过自定义的实现来进行类的一些定制化操作。一般用来执行一些只会执行一次的代码。 从官方文档可以看出 load 的调用顺序: 先调用父类的
iOS 升级打怪 - Category
category:一种通过 runtime 实现的技术,该技术可以使我们在没有源码的情况下,动态的给类添加方法、协议、属性。category 是在程序运行时将添加的代码动态合并到类对象或者元类对象中。
iOS 升级打怪 - KVO & KVC
KVO:Key-Value Observing,一种通过给目标对象添加观察者来监听字段值改变的机制。 原理 它的底层原理是通过 Runtime 的 isa 混写来实现的。 假设我们现在需要使用
iOS 升级打怪 - NSObject 的底层数据结构
在 Objective-C 中对象共有三种类型,分别是实例对象、类对象和元类对象。isa 和 superclass 在三种类型对象之间联系。
iOS 升级打怪 - NSObject 内存占用及分配
NSObject的实例对象需要的内存大小是否与系统分配的一致?导致不一致的原因又是什么?从源码角度探究原因。
Delegated - 自动实现闭包的 weak self
Closure,在日常代码中会经常使用到。使用它时,为了防止可恶的内存泄漏,要时常记得写 [weak self] 这样的代码。但对于程序员来说写这种模板代码是很枯燥的,所以, Delegated 就应运而生了。通过它注册过后的 Closure,可以自动的 weak self。下…
关于 Swift 访问控制(Access Control)的总结
访问控制可以限制别的源文件或者模块来访问你的代码。该特性可以让你隐藏代码的具体实现,从而使代码有更好的封装性。 对于访问控制,Swift 提供了五个关键字。根据可访问的优先级,从高到低依次为:open、public、internal、fileprivate、private。 o…
Swift final 关键字的理解
final 关键字的作用:使用它修饰的变量、方法、类不可继承。 总结:但凡用 final 修饰的都不可继承,它可以修饰 属性、方法、类。 使用 final 可以提高性能。使用 final 修饰可以避免系统的动态派发(Dynamic Dispatch)。关于 Dynamic Di…
对 Swift 中 @escaping 关键字的理解
在我们的开发过程中,时常会使用到闭包,有的会用 @escaping 关键字修饰,有的则不会。今天,通过这篇文章希望能让大家对何时使用 @escaping,以及为什么使用有一个清晰的认知。 当闭包的生命周期超过当前函数的生命周期时,我们需要使用该关键字标识。 通过上述的打印结果可…
关于 Swift Codable 的一些实践
在日常开发中,JSON 转模型使用三方库习惯了,扎一使用系统的 Decodable 协议还有点不习惯。本文主要记录关于 Decodable 的基本使用及特殊情况的处理。 PS: Decodable 还是挺好用的。 先说一下最常碰见的场景:JSON 转 struct。假设有以下代…
下一页