自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (4)
  • 收藏
  • 关注

原创 我为什么痛恨 iOS 原生 UIKit 开发

可以用两个显示器,一个编写代码,另一个实时看代码的结果,简直不要太爽。虽然项目可以只编译改动的文件,但是每次运行项目不仅仅是在编译,还包含很多其它的流程,例如将代码和资源拷贝到设备中,这些流程都非常占用时间。考虑到现在还有大量的公司没有开始用 SwiftUI 开发,SwiftUI 只能用于开发苹果生态中的应用,并且越来越多的公司开始提供对鸿蒙的支持,跨平台技术的前景应该会越来越好。特别是做 UI 的精细调整时,需要对照设计稿和设计师的需求进行像素级的调整,这让我对一次又一次运行项目产生了巨大的怀疑和抵触。

2024-08-18 17:42:43 434

原创 详解 SwiftUI 数据流

在 SwiftUI 中,数据流是一种用于在视图之间传递和共享数据的机制。它们允许我们在整个应用程序中保持状态,这使我们能够更轻松地管理应用程序的行为和响应。SwiftUI 中的数据流可以分为两种类型:单向数据流和双向数据流。单向数据流是指数据只能从父视图流向子视图,而双向数据流是指数据可以在父视图和子视图之间双向流动。SwiftUI 的数据流模型可以帮助我们构建高度动态和交互式的用户界面。在 SwiftUI 中,我们可以使用状态变量、绑定和环境对象来处理数据。状态变量用于存储视图的本地状态。

2023-04-11 12:21:14 673

原创 Combine 操作符对比剖析 —— merge、zip 和 combineLatest

综上所述,merge、zip 和 combineLatest 操作符都是非常有用的操作符,它们可以将多个 Publisher 合并成一个,以便更方便地处理和订阅。merge 操作符可以将多个 Publisher 合并成一个,并按照它们产生事件的顺序将这些事件发送给下游;zip 操作符可以将多个 Publisher 合并成一个,并将它们产生的事件配对发送给下游;combineLatest 操作符可以将多个 Publisher 合并成一个,并将它们产生的最新事件进行组合发送给下游。

2023-04-10 12:33:45 594

原创 手把手教你编译 Swift 源码

Swift 是一种开源的编程语言,由 Apple 开发并开源,可运行于多种平台,包括 iOS、macOS、watchOS、tvOS 和 Linux。Swift 源代码托管在 GitHub 上,任何人都可以克隆源码并编译自己的版本。本文将手把手教你编译 Swift 源码。

2023-04-10 11:07:05 1027

原创 用迭代法实现二叉树的中序遍历——Swift实现

二叉树是一种常见的数据结构,它由节点和链接组成,每个节点包含一个值和指向其左右子节点的指针。在对二叉树进行操作时,一种常见的需求是对树进行遍历,以便访问所有节点。本文将介绍一种基于迭代法的算法来实现二叉树的中序遍历,以及如何用 Swift 语言实现这个算法。中序遍历是指按照节点值从小到大的顺序访问二叉树的节点。通常,中序遍历使用递归实现,但在某些情况下,递归可能会导致栈溢出。为了避免这种情况,我们可以使用迭代法实现中序遍历。

2023-04-10 10:57:31 165

原创 通过源码分析 fishhook 库的实现原理

通过源码分析,我们了解了 Fishhook 库的实现原理。它利用动态链接库的特性,通过修改符号表实现 Hook 函数。Fishhook 的使用非常简单,只需要调用函数即可。Fishhook 可以用于 iOS 和macOS 系统中 Hook 函数,对于开发人员而言非常方便和实用。

2023-04-09 17:43:51 268

原创 二分查找详解及用 Swift 实现

二分查找是一种高效的查找算法,它的时间复杂度为O(log n),适用于有序数组中查找某个元素的情况。Swift 开发者可以使用二分查找来优化程序的运行效率,尤其是在处理大型数据集时。同时,Swift 中也提供了多种内置的排序算法,如sort()和sorted()方法,可以方便地对数组进行排序,从而进一步提高二分查找的效率。除了常规的二分查找,还有一些变体算法,如左侧二分查找、右侧二分查找和查找第一个大于等于目标元素的位置等。这些算法在实际应用中也经常使用,可以根据具体情况选择相应的算法。

2023-04-09 09:37:44 192

原创 理解 Swift 的方法派发

理解了 Swift 中的方法派发方式后,可以知道,应该优先使用静态派发,可以获得最佳的性能,只有在需要和 Objective-C 代码交互时才应该使用消息派发。在需要动态派发的地方,应该优先使用面向协议设计使用基于协议的派发,然后根据具体情况使用类本身的动态派发。

2023-02-15 23:13:15 780

原创 全面掌握 Swift 包依赖管理工具 —— 命令行、Manifest API、Xcode、二进制包、集合、插件

本文依次介绍了包的概念、包管理工具在命令行的使用、Manifest API、包管理工具在 Xcode 中的使用,包集合、插件等内容。由于 SwiftPM 的特性,他正变得越来越流行,我们在新项目中会优先采用 SwiftPM 作为包管理工具。如果在使用 SwiftPM 时遇到什么问题,欢迎留言讨论。

2023-02-11 18:38:05 2239

原创 提高 Xcode 编译速度方法大总结

有时会给工程添加自定义脚本,用来在编译前后自动地做一些额外的事情,例如自动设置环境变量,执行一些特定的任务,生成资源文件等。在默认情况下,Xcode 会在每次编译时(包括增量编译)都去执行自定脚本。很多时候,每次都执行脚本时没有必要的,这时可以给自定义脚本设置输入和输出文件来避免每次都执行。为了避免每次都执行自定义脚本,需要在 Xcode 的脚本配置中配置至少一个输入文件和输出文件。Xcode 会通过输入和输出文件来决定是否执行这个脚本。自定义脚本没有配置任何输入文件。自定义脚本没有配置任何输出文件。

2023-02-05 16:51:55 1453

原创 理解 Clang Module 和 Module Map 语法

很多时候,开发工具都对我们隐藏了很多底层的细节,了解这些细节,可以帮助我们了解底层的原理,分析并解决一些棘手的问题。Clang 是 Apple 平台上重要的工具,值得我们去研究探索。

2023-02-02 11:19:41 573

原创 依赖注入和依赖注入容器

控制反转就是把传统的控制逻辑委托给另一个类或框架来处理,客户方只需实现具体的任务而不需要关心控制逻辑。举个例子,比如存在客户方和服务方两个类,客户方需要调用服务方的函数来执行某个逻辑。在传统的编程方式中,客户方根据自己的需求直接去调用服务方的函数从而达到目的。而控制反转,则是把控制逻辑交给服务方,服务方提供了一个控制流的框架,具体的内容需要由客户方来填充,也就是说对流程的控制反转了,现在是服务方调用客户方。据说好莱坞有句名言 Don’t call us, we’ll call you,差不多就是这个意思。

2023-01-27 15:01:07 242

原创 仓库模式及其在 Swift 项目中的应用

仓库模式(Repository pattern)可以帮助你提供数据层的抽象,让你的代码更具维护性和扩展性。

2023-01-09 21:09:42 123

原创 详解 Codable 的用法和原理

本文介绍了 Codable、Codable 的用法,JSON 转模型的原理,以及默认值的处理。

2022-09-12 22:36:21 953

原创 探索 Objective-C 的对象所有权修饰符

引言大家都知道,Objective-C 有 4 个对象所有权修饰符(Ownership Qualifier),分别是:__strong__weak__unsafe_unretained__autoreleasing在日常开发中日常用的最多的就是 __weak,几乎都是为了解决循环引用的问题。__strong 是一个变量默认的修饰符,不需要写。__unsafe_unretained 因为它的不安全,基本上不会去使用它。__autoreleasing 见得最多的地方估计就是 NSError * _

2022-05-22 19:21:55 264

原创 Swift 模块化项目结构最佳实践

原文链接:http://liuduo.me/2017/05/22/moduleproject/ 微博:@刘铎Derek 这篇文章没有技术,只讲怎么用 Xcode 组织项目结构。开篇写了这么多年的代码,目前觉得最好的构造项目结构的方式就是 模块化。模块化在 Objective-C 的项目中可能比较难搞起来,但是在 Swift 项目中就游润有余了,因为 Swift 有着天生 Module 的概念,和它的

2017-05-22 13:51:47 371 2

《C++ Primer中文版第四版》学习笔记

《C++ Primer中文版第四版》学习笔记,免费赠送

2011-10-08

几句话让你精通C语言中的宏

简短精炼的语言,从实战出发,让你知道C语言中宏的用法。

2011-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除