- 博客(1052)
- 资源 (66)
- 问答 (3)
- 收藏
- 关注

原创 Swift之Codable自定义解析将任意数据类型解析为想要的类型
一、前言大多数现代应用程序的共同点是,它们需要对各种形式的数据进行编码或解码。无论是通过网络下载的 Json 数据,还是存储在本地的模型的某种形式的序列化表示形式,对于几乎任何 Swift 代码库而言,能够可靠地编码和解码不同的数据都是必不可少的。这就是为什么 Swift 的 Codable API 能成为 Swift 4.0 的新功能一部分时,具有如此重要的重要原因。从那时起,它已发展成为一种标准的,健壮的机制,可以在 Apple 的各种平台中使用编码和解码包括服务器端 Swift。Codable
2021-10-24 14:54:56
58925
95

原创 iOS之深入解析Cocoapods的工作原理与源码分析
一、Cocoapods 简介① Cocoapods 是什么?Cocoapods 是一个运行在 Ruby 环境下,负责管理 iOS 项目中第三方开源库的工具,它可以解决库与库之间的依赖关系,同时通过创建一个 Xcode 的 workspace 来将这些第三方库与工程连接起来,方便开发使用。Cocoapods 能让我们集中统一管理第三方开源库,为开发节省设置和更新第三方开源库的时间,使用 Cocoapods 的目的是让我们能自动的、集中的、直观的管理第三方库。使用 Cocoapods 管理第三方的开源
2021-09-05 02:52:08
16529
41

原创 iOS之性能优化·优化App界面的渲染与流畅度
一、界面渲染流程① 渲染流程分析计算机中的显示过程通常是通过 CPU、GPU、显示器协同工作来将图片显示到屏幕上,如下图所示:苹果为了解决图片撕裂的问题使用了 VSync + 双缓冲区的形式,就是显示器显示完成一帧的渲染的时候会向发送一个垂直信号 VSync,收到这个这个垂直信号之后显示器开始读取另外一个帧缓冲区中的数据而 App 接到垂直信号之后开始新一帧的渲染。CPU 计算好显示内容,提交至 GPU;GPU 经过渲染完成后将渲染的结果放入 FrameBuffer(帧缓存区)
2021-07-13 19:54:06
12531
30

原创 iOS之深入解析weak关键字的底层原理
一、weak 关键字在 iOS 开发过程中,会经常使用到一个修饰词 weak,使用场景大家都比较清晰,避免出现对象之间的强强引用而造成对象不能被正常释放最终导致内存泄露的问题。weak 关键字的作用是弱引用,所引用对象的计数器不会加1,并在引用对象被释放的时候自动被设置为 nil。...
2021-06-16 14:04:49
16413
5

原创 iOS之深入解析KVO的底层原理
一、KVO 简介① 概念KVO 全称 Key Value Observing,是苹果提供的一套事件通知机制,允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于 KVO 的实现机制,所以对属性才会发生作用,一般继承自 NSObject 的对象都默认支持 KVO。KVO 和 NSNotificationCenter 都是 iOS 中观察者模式的一种实现,区别在于,相对于被观察者和观察者之间的关系,KVO 是一对一的,而 NSNotificationCenter 是一对多的,KVO 对被监
2021-06-06 19:52:54
18368
27

原创 iOS之深入解析KVC的底层原理和自定义KVC的实现
一、KVC 简介① 定义KVC 是 Key-Value Coding 的简称,中文译义为键值编码。KVC 是指 iOS 的开发中,可以允许开发者通过 Key 名直接访问对象的属性,或者给对象的属性赋值,而不需要调用明确的存取方法。KVC 是由 NSKeyValueCoding 非正式协议启用的一种机制,对象采用该协议来间接访问其属性,即可以通过一个字符串 key 来访问某个属性。这种间接访问机制补充了实例变量及其相关的访问器方法所提供的直接访问。通过 KVC 就可以在运行时动态地访问和修改对象的
2021-06-05 18:16:57
19816
13

原创 iOS之深入解析内存管理Tagged Pointer的底层原理
一、前言① Tagged Pointer 概念iOS 开发者对“引用计数”这个名词肯定不陌生,引用计数是苹果为了方便开发者管理内存而引入的一个概念。当引用计数为 0 时,对象就会被释放。但是,真的是所有对象都是这样吗?其实,内存管理方案除了常见的 MRC 和 ARC,还有以下三种:Tagged Pointer、Nonpointer_isa、SideTables。在 2013 年 9 月,苹果推出了 iPhone5s,与此同时,iPhone5s 配备了首个采用 64 位架构的 A7 双核处理器,为了
2021-05-27 20:55:15
17964
3

原创 iOS之深入解析Runloop的底层原理
一、Runloop 简介① 什么是 Runloop ?RunLoop 是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个 RunLoop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。Runloop 不仅仅是一个运行循环(do-while 循环),也是提供了一个入口函数的对象,消息机制处理模式,运行循环从两种不同类型的源接收事件。输入源提供异步事件,通常是来自另一个线程或来自不同应用程序的消息。定时器源提供同步事件,发生在预定时间或重复间隔。两种类型的源都使用特定于
2021-05-20 21:12:42
18363
9

原创 iOS之深入解析自动释放池autoreleasepool的底层原理
一、自动释放池 autoreleasepool 机制自动释放池是 OC 中的一种内存自动回收机制,它可以将加入 AutoreleasePool 中的变量 release 的时机延迟。简单来说,就是当创建一个对象,在正常情况下,变量会在超出其作用域的时立即release。如果将对象加入到了自动释放池中,这个对象并不会立即释放,会等到 runloop 休眠,超出 autoreleasepool 作用域{}之后才会被释放。自动释放池 autoreleasepool 其机制如下图所示:autore
2021-05-20 18:52:12
18546
9

原创 iOS之深入解析“锁”的底层原理
一、OSSpinLock(自旋锁)自从 OSSpinLock 出现安全问题,在 iOS10 之后就被 Apple 废弃。自旋锁之所以不安全,是因为获取锁后,线程会一直处于忙等待,造成了任务的优先级反转;其中的忙等待机制可能会造成高优先级任务一直 running 等待,占用时间片,而低优先级的任务无法抢占时间片,会造成一直不能完成,锁未释放的情况;在 OSSpinLock 被弃用后,其替代方案是内部封装 os_unfair_lock,而 os_unfair_lock 在加锁时会处于休眠状态,而不是自旋
2021-05-12 01:38:43
17989
5

原创 iOS之深入解析保证线程安全的“锁”的使用和性能分析
一、线程安全在平时的开发中经常使用到多线程,在使用多线程的过程中,难免会遇到资源竞争的问题,那么怎么来避免出现这种问题呢?当一个线程访问数据的时候,其他的线程不能对其进行访问,直到该线程访问完毕。简单来讲就是在同一时刻,对同一个数据操作的线程只有一个。只有确保了这样,才能使数据不会被其他线程影响。而线程不安全,则是在同一时刻可以有多个线程对该数据进行访问,从而得不到预期的结果。比如写文件和读文件,当一个线程在写文件的时候,理论上来说,如果这个时候另一个线程来直接读取的话,那么得到的结果可能是无法预料
2021-04-11 01:03:04
8299
7

原创 iOS之深入解析GCD的底层原理
一、队列① 源码分析在源码中搜索 dispatch_queue_create 关键字,可以在 queue.c 中发现: dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr) { return _dispatch_lane_create_with_target(label, attr, DISPATCH_TARGET_QUEUE_DEFAULT, true); }
2021-04-05 15:25:26
8044
14

原创 iOS之深入解析Block的底层原理
这里写目录标题一级目录二级目录三级目录一、block 本质① block 本质探究② block为什么需要调用?③ block是如何获取外界变量的?④ __block的原理二、block 底层源码分析① block 源码位置② block 类型分析③ 内存变化④ 调用三、签名四、block 三次 copy① _Block_copy 源码分析② _Block_object_assign 分析③ 调试验证④ 总结五、_Block_object_dispose 分析六、block 三层 copy 流程如下:一级
2021-03-17 20:58:54
34908
4

原创 iOS之深入解析Block的使用和外部变量捕获
一、前言闭包 = 一个函数「或指向函数的指针」+ 该函数执行的外部的上下文变量「也就是自由变量」; Block是Objective-C对于闭包的实现。其中,Block:可以嵌套定义,定义Block方法和定义函数方法相似;Block 可以定义在方法内部或外部;只有调用Block时候,才会执行其{}体内的代码;本质是对象,使代码高聚合。使用 clang 将 OC 代码转换为 C++ 文件查看block的方法:在命令行输入代码 clang -rewrite-objc 需要编译的OC文件
2021-03-16 04:04:08
32350
10

原创 iOS之LLVM编译流程和Clang插件开发集成
LLVM简介一、什么是LLVM?LLVM 是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM 最早的时候是 Illinois 的一个研究项目,主要负责人是Chris Lattner,他现在就职于Apple。Apple 目前也是 llvm 项目的主要赞助者之一。在理解 LLVM 时
2020-11-26 13:33:35
12286
10

原创 iOS之性能优化·优化App的启动速度
抛砖引玉苹果是一家特别注重用户体验的公司,过去几年一直在优化 App 的启动时间,特别是去年的 WWDC 2019 keynote [1] 上提到,在过去一年苹果开发团队对启动时间提升了 200%;虽然说是提升了 200%,但是有些问题还是没有说清楚,比如:为什么优化了这么多时间?作为开发者的我们,我们还可以做哪些针对启动速度的优化?所以我们今天结合 WWDC2019 - 423 - Optimizing App Launch [2] 聊一下和启动相关的东西。概念引入一、Mach-O
2020-11-11 04:16:35
32998
3

原创 iOS之深入解析dyld与ObjC关联的底层原理
App启动与dylb加载我们知道 dyld 的加载过程,即在 App 启动启动执行 main 函数之前,dylb 主要作了环境变量配置、共享缓存、主程序的初始化、插入动态库、链接主程序、链接动态库、弱符号绑定、执行初始化方法、寻找主程序入口等一系列处理,具体请参考我之前的博客:iOS之深入解析App启动dyld加载流程的底层原理;在 main 函数执行过程中,当 dyld 加载到开始链接主程序的时候 , 递归调用 recursiveInitialization 函数。recursiveInitial
2020-10-22 05:05:44
33606
2

原创 iOS之深入解析App启动dyld加载流程的底层原理
dyld 简介一、什么是dyld?dyld 是英文 the dynamic link editor 的简写,意为动态链接器,是苹果操作系统的一个重要的组成部分。在 iOS/Mac OSX 系统中,仅有很少量的进程只需要内核就能完成加载,基本上所有的进程都是动态链接的,所以 Mach-O 镜像文件中会有很多对外部的库和符号的引用,但是这些引用并不能直接用,在启动时还必须要通过这些引用进行内容的填补,这个填补工作就是由 动态链接器dyld 来完成的,也就是符号绑定。动态链接器 dyld 在系统中以一个
2020-10-13 04:44:31
31528
5

原创 iOS之深入解析objc_msgSend消息转发机制的底层原理
一、抛砖引玉objc_msgSend() 消息发送的过程就是 通过 SEL 查找 IMP 的过程 。objc_msgSend() 是用 汇编语言 实现的,使用汇编实现的优势是:消息发送的过程需要足够的快速,高级语言在执行的时候都是需要翻译成汇编语言,经过编译成被机器识别的 二进制文件 ,使用汇编可以省去这一翻译过程,可以更快速被机器识别;对于消息的发送,存在很多未知的参数,这有很多不确定性,使用 汇编的寄存器 要比 C 或者 C++ 表现好的多。objc_msgSend() 通过汇编
2020-10-13 03:06:59
33611
3

原创 iOS之深入解析Runtime的objc_msgSend“慢速查找”底层原理
CacheLookup 快速查找objc_msgSend 通过汇编快速查找方法缓存,如果能找到则调用 TailCallCachedImp 直接将方法缓存起来然后进行调用,如果查找不到就跳到 CheckMiss ,然后走慢速查找流程。该文主要分析 objc_msgSend 慢速查找流程。objc_msgSend 的快速查找请参考之前的文章:iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理。__objc_msgSend_uncached 慢速查找CheckMiss 源码
2020-09-23 01:26:34
33168
3

原创 iOS之深入解析Runtime的objc_msgSend“快速查找”底层原理
Runtime一、什么是 runtime ?Objective-C 语言将尽可能多的决策从编译时和链接时推迟到运行时。只要有可能,它就动态地做事情,这意味着该语言不仅需要一个编译器,还需要一个运行时系统来执行编译后的代码。运行时系统作为 Objective-C 语言的一种操作系统,它使语言起作用。因为 Objc 是一门动态语言,所以它总是想办法把一些决定工作从编译连接推迟到运行时。也就是说只有编译器是不够的,还需要一个运行时系统 (runtime system) 来执行编译后的代码。这就是 Obje
2020-09-20 00:44:08
30815
3

原创 iOS之深入解析AFNetworking的底层原理
这里写目录标题AFNetworking简介一、AFNetworking 版本二、AFNetworking 构成模块解析一、AFURLSessionManager① 创建sessionManager②③整体流程① 创建 NSMutableRequest 对象② 用 NSMutableRequest 对象创建 NSURLSessionDataTask 对象AFNetworking简介一、AFNetworking 版本AFNetworking 是 iOS 最常用的网络框架,虽然系统也有 NSURLSessi
2020-09-04 23:40:37
9041
3

原创 iOS之深入解析对象isa的底层原理
一、isa 简介alloc初始化时不仅创建了对象并且分配内存,同时初始化 isa 指针属性。Objective-C 对象在底层本质上是结构体,所有的对象里面都会包含有一个 isa ,isa 的定义是一个联合体 isa_t,isa_t 包含了当前对象指向类的信息。isa 是一个联合体,而这其实是从内存管理层面来设计的,因为联合体是所有成员共享一个内存,联合体内存的大小取决于内部成员内存大小最大的那个元素,对于 isa 指针来说,就不用额外声明很多的属性,直接在内部的 ISA_BITFIELD 保存信息。
2020-09-02 12:34:19
16900
3

原创 iOS之深入解析YYImage图片处理的底层原理
YYImage的使用特性支持WebP、APNG、GIF类型动画图像的播放/编码/解码;支持WebP、PNG、GIF、JPEG、JP2、TIFF、BMP、ICO、ICNS类型静态图像的显示/编码/解码;支持PNG、GIF、JPEG、BMP类型图片的渐进式/逐行扫描/隔行扫描解码;支持多张图片构成的帧动画播放,支持单张图片的 sprite sheet 动画;高效的动态内存缓存管理,以保证高性能低内存的动画播放;完全兼容 UIImage 和 UIImageView,使用方便。基本用法显示动
2020-07-08 13:26:10
17196
3
原创 HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
在HarmonyOS中实现PDF文件的下载、本地存储和预览功能,需要综合运用网络请求、文件管理和文档预览等能力。
2025-03-27 14:18:32
471
原创 HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App
在HarmonyOS中,通过跳转 alipays://platformapi/startapp?appId=XXXXXXXXXXXX&backSCAppScheme=myAppScheme 调用支付宝功能后,如果需要返回 App,该如何处理呢?
2025-03-27 10:55:16
602
原创 SwiftUI之如何自定义导航
默认情况下,SwiftUI 提供的各种导航 API 在很大程度上是以用户直接输入为中心的。也就是说,导航是在系统响应,如按钮的点击和标签切换等事件时由系统本身处理的。然而,有时我们可能想更直接地控制应用程序的导航执行方式,尽管 SwiftUI 在这方面仍然不如 UIKit 或 AppKit 灵活,但它确实提供了相当多的方法,在构建的视图中执行完全自定义的导航。
2025-02-07 14:30:12
826
原创 SwiftUI之如何使用ScrollView的滚动偏移
在本文中,我们深入探讨了 SwiftUI 框架中 ScrollView 的新特性,特别是如何通过 ScrollPosition 类型实现更精确的滚动控制。我们介绍了如何使用 ScrollPosition 类型进行滚动位置的设置和读取,包括使用偏移量、视图标识符等方式进行操作。此外,我们还展示了如何通过动画和事件处理来增强用户体验。通过这些新功能,开发者可以更灵活地控制滚动视图的行为,从而创建更加流畅和直观的用户界面
2025-02-07 11:20:32
367
原创 OpenEL GS之深入解析视频图像处理中怎么实现错帧同步
现在移动设备的系统相机的最高帧率在 120 FPS 左右,当帧率低于 20 FPS 时,用户可以明显感觉到相机画面卡顿和延迟。我们在做相机预览和视频流处理时,对每帧图像处理时间过长(超过 30 ms)就很容易造成画面卡顿,这个场景就需要用到错帧同步方法去提升画面的流畅度。错帧同步,简单来说就是把当前的几帧缓冲到子线程中处理,主线程直接返回子线程之前的处理结果,属于典型的以空间换时间策略。错帧同步策略也有不足之处,它不能在子线程中缓冲太多的帧,否则造成画面延迟。
2024-01-18 18:02:15
490
原创 OpenGL ES之深入解析图像的腐蚀、膨胀、边缘检测处理
本文分析一下图像基本处理之腐蚀、膨胀和边缘检测,它们在图像处理和计算机视觉领域有着广泛的应用。
2024-01-18 16:16:00
584
原创 OpenGL ES之深入解析如何实现图像锐化
图像锐化是一种图像处理技术,其目的是增强图像中的细节和边缘,使图像看起来更加清晰。这一过程通常涉及到突出图像中的高频信息,特别是强调像素之间的灰度变化。通过增强图像的高频细节,图像锐化可以改善图像在人类视觉系统和计算机视觉系统中的感知效果。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算,其实这里用的是差分)就可以使图像变得清晰。
2024-01-15 14:14:01
108
1
原创 SwiftUI之深入解析如何使用SwiftUI Charts创建折线图
苹果在 WWWDC 2022 上推出了 SwiftUI 图表,这使得在 SwiftUI 视图中创建图表变得异常简单。图表是以丰富的格式呈现可视化数据的一种很好的方式,而且易于理解。本文展示了如何用比以前从头开始创建同样的折线图少得多的代码轻松创建折线图。此外,自定义图表的外观和感觉以及使图表中的信息易于访问也是非常容易的。
2024-01-13 23:30:00
1722
1
原创 SwiftUI之深入解析高级布局的实战教程
首先实现一个圆形布局的视图容器 WheelLayout:1)") }当布局发生改变时,SwfitUI 提供了内置动画支持,因此如果将轮子的旋转值更改为 90 度,我们将会看见它是如何逐渐的移动到新的位置上:// ...渲染动画的逻辑就是如此,那么我们在探索一下深层次到底发生了什么?
2024-01-13 15:18:31
1748
原创 SwiftUI之深入解析布局协议的功能与布局的实现教程
采用布局协议类型的任务,是告诉 SwiftUI 如何放置一组视图,需要多少空间。这类型常常被作为视图容器,虽然布局协议是 2022 年新推出的(至少公开来说),但是我们在第一天使用 SwiftUI 的时候就在使用了,当每次使用 HStack 或者 VStack 放置视图时都是如此。请注意至少到现在,布局协议不能创建懒加载容器,比如 LazyHStack 或 LazyVStack,懒加载容器是指那些只在滚入屏幕时渲染,滚出到屏幕外就停止渲染的视图。
2024-01-12 23:00:00
1602
1
原创 SwiftUI之深入解析Frame Behaviors
当开始使用 SwiftUI 时,可能接触到的第一个修饰符是 frame(width:height:alignment),定义 frame 是 SwiftUI 最具挑战性的任务之一,当我们使用修饰符(如 .frame().)时,会发生很多事情。SwiftUI 中的修饰符实际上并不修改视图,大多数情况下,当在视图上应用修饰符时,会创建一个新视图,该视图围绕着被“modified”的视图,需将包装器视图视为 frame。
2024-01-11 20:58:16
1219
原创 SwiftUI之深入解析Alignment Guides的超实用实战教程
Alignment guides 是一个强大的布局工具,但通常未被充分利用。在很多情况下,它们可以帮助我们避免更复杂的选项,比如锚点偏好。如下所示,对对齐的更改也可以自动(并且容易地)动画化:如果您曾经尝试过使用 alignment guides,那么可能会对结果感到困惑。它们倾向于做期望它们做的事,直到它们不做。在花了一些时间测试对齐指南的限制后,可以得出结论,它们确实有效。然而,我们对它们的期望是困惑的。
2024-01-09 18:41:27
1909
原创 SwiftUI之深入解析如何使用accessibilityChartDescriptor视图修饰符为视图构建音频图表
音频图表功能对于视力受损的用户来说是一项重大改进。音频图表功能的好处是,可以将其用于任何想要的视图,甚至包括图像视图,只需创建 AXChartDescriptor 类型的实例。
2024-01-06 02:30:00
1125
1
原创 SwiftUI之深入解析如何使用新地图框架MapKit
一旦将 App 目标更新到 iOS 17,Xcode 会将任何使用旧的 Map 初始化器的用法标记为已弃用:会有警告提示:init coordinate region 已在 iOS 17 中弃用。请改用带有 MapContentBuilder 参数的地图初始化器。在 iOS 17 中,MapKit 为 SwiftUI 引入了需要 MapContentBuilder 参数的地图初始化器。了解 iOS 17 中的 MapKit 后,可以发现 Apple 引入了更适合 SwiftUI 的 API。
2024-01-05 05:00:00
744
1
原创 SwiftUI之深入解析如何创建一个灵活的选择器
本主要分析如何使用 SwiftUI 构建一个灵活的选择器(FlexiblePicker),用于选择多个选项。首先创建了一个 Selectable 协议,使得选择的选项对象需要实现 displayedName 和 isSelected 属性。然后,详细介绍实现该选择器的逻辑,包括如何处理选项的布局、宽度和高度,以及如何处理用户与按钮的交互。最后,提供了一个简单的视图实现,可以在 SwiftUI 中使用该选择器。这个选择器可用于创建各种交互式选择界面。
2024-01-05 02:30:00
1985
Objective C之Hook所有+load方法简单示例
2022-04-02
SwiftUI高级动画之路径Paths、几何效果GeometryEffect与AnimatableModifier的效果实现
2022-03-05
SwiftUI之绘制徽章视图的路径和形状
2022-01-29
SwiftUI之如何处理特定的数据和如何在视图中适配数据模型对象.zip
2021-12-20
SwiftUI之创建列表展示页和导航跳转详情页.zip
2021-12-19
SwiftUI之如何创建和组合视图.zip
2021-12-18
Python之俄罗斯方块源代码及程序.zip
2021-10-28
iOS之列表性能优化异步绘制.zip
2021-10-07
HarmonyOS之基于Service Ability的启动、停止、连接、断开连接等操作及跨设备操作.zip
2021-08-11
HarmonyOS之音乐播放器展示前台Service的使用方法.zip
2021-08-11
PageAbility.zip
2021-08-10
HarmonyOS之通过 Preferences 创建、删除、更新和查询应用程序偏好数据实现登录页面偏好数据存取及主页面背景色偏好数据存取.zip
2021-08-03
HarmonyOS之实现对象关系映射数据库的升级、备份、删除、恢复以及表的增删改查.zip
2021-08-03
HarmonyOS之基于Data Ability的关系型数据库操作方法.zip
2021-08-02
HarmonyOS之演示生物特征识别应用于设备解锁、应用登录、支付等身份认证场景.zip
2021-08-02
HarmonyOS之演示照片/视频、位置、日历、麦克风的权限申请并通过访问相关业务确认授权是否成功.zip
2021-08-02
HarmonyOS之如何使用音视频播放控制框架实现音乐播放功能.zip
2021-08-02
HarmonyOS之演示音频播放、音频采集、音量管理和短音播放等功能.zip
2021-08-02
HarmonyOS之演示如何通过相机模块相关接口实现拍照、录像等功能.zip
2021-08-02
HarmonyOS之Java UI的CustomLayout.zip
2021-08-02
HarmonyOS之演示帧动画、数值动画、属性动画和组合动画的实现.zip
2021-08-02
HarmonyOS以长列表联系人为例,演示ListContainer组件的基本使用.zip
2021-08-02
Apple 可编译 objc 源码.zip
2020-09-15
OpenGL ES之手写绘画板.zip
2020-09-09
RxSwift基本使用.zip
2020-09-04
GLSL之“大长腿”美颜效果.zip
2020-08-29
Metal之MTLBuffer批量加载顶点数量较多的图形渲染.zip
2020-08-28
Metal之基于世界坐标系下渲染三角形.zip
2020-08-26
Swift之Internationalization处理及App内切换.zip
2020-08-25
OpenEL GS滤镜处理(缩放滤镜、灵魂出窍滤镜、抖动滤镜、闪白滤镜、毛刺滤镜、幻觉滤镜).zip
2020-08-22
GLSL滤镜之马赛克.zip
2020-08-21
iOS UniApp的WCDB集成问题
2023-08-10
优快云的markdown语法如何在表格中如何插入图片?
2021-07-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人