自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

╰つ栺尖篴夢ゞ

少一点问别人为什么,多一点问自己凭什么!!*(^^)*

  • 博客(10)
  • 资源 (66)
  • 问答 (3)
  • 收藏
  • 关注

原创 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 34845 4

原创 iOS之深入解析Block的使用和外部变量捕获

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

2021-03-16 04:04:08 32260 10

原创 iOS之深入分析GCD的函数与队列以及多种组合使用

一、GCD 简介① 什么是 GCD ?GCD 是 Apple 开发的一个多核编程的较新的解决方法;GCD 全称:Grand Central Dispatch,是纯 C 语言,提供非常多强大的函数;它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统;它是一个在线程池模式的基础上执行的并发任务;在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。简而言之,GCD 就是将任务添加到队列,并指定任务执行的函数;② GCD 优势GCD 是苹果公司为多核

2021-03-25 13:59:06 28115

原创 iOS之深入探究多线程实现、线程安全和线程死锁

一、线程与进程① 线程与进程的定义线程线程是进程的基本执行单元,一个进程的所有任务都在线程中执行;进程要想执行任务,必须得有线程,进程至少要有一条线程;程序启动会默认开启一条线程,这条线程被称为主线程或者 UI 线程。进程进程是指在系统中正在运行的一个应用程序;每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内;通过“活动监视器”可以查看 mac 系统中所开启的线程。② 线程与进程的关系地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的

2021-03-24 16:20:39 11062 2

原创 iOS经典面试题之深入解析runtime是如何实现weak变量的自动置nil

一、weak 属性特点weak 表明该属性定义了一种“非拥有关系” (nonowning relationship);为 weak 属性设置新值时,设置方法既不保留新值,也不释放旧值;同 assign 类似,然而在属性所指的对象释放时候,属性值也会清空(nil out)。二、runtime 如何实现 weak 属性① 实现步骤初始化时:runtime 会调用 objc_initWeak 函数,初始化一个新的 weak 指针指向对象的地址。添加引用时:objc_initWeak 函数会调用

2021-03-20 21:35:06 695 1

原创 iOS经典面试题之深入分析“内存平移”的原理

一、抛砖引玉现在有一个YDWPerson类 ,其中有一个属性 name 和一个实例方法saySomething,如下: @interface YDWPerson : NSObject @property (nonatomic, copy) NSString *name; - (void)saySomething; @end @implementation YDWPerson - (void)saySomething { NSLog(@"%s",__func__);

2021-03-20 20:48:53 10968 2

原创 iOS之深入解析常见密钥加密方式的原理和使用

一、前言在我们日常的iOS开发中,加密是必不可少的一部分,而普通加密方法是讲密码进行加密后保存到用户偏好设置中,钥匙串是以明文形式保存,但是不知道存放的具体位置,下面本文将详细给大家介绍iOS中常见的几种加密方法。二、base64加密① 原理原本是 8 个 bit 一组表示数据,改为 6 个 bit 一组表示数据,不足的部分补零,每两个0 用 一个 = 表示;用 base64 编码之后,数据长度会变大,增加了大约 1/3 左右;可进行反向解密;Xcode7.0 之后出现;编码有个非常显著

2021-03-18 19:57:47 6004

原创 iOS之深入解析数组遍历的底层原理和性能分析

一、OC数组的类体系当我们创建一个 NSArray 对象时,实际上得到的是 NSArray 的子类 __NSArrayI 对象。同样的,创建 NSMutableArray 对象,得到的同样是其子类 __NSArray对象。有趣的是,当我们创建只有一个对象的 NSArray 时,得到的是__NSSingleObjectArrayI 类对象。__NSArrayI 和 __NSArrayM,__NSSingleObjectArrayI 为框架隐藏的类。OC数组的类体系如下:通过 NSArray

2021-03-14 15:03:07 26280 1

原创 Metal之实现视频采集与实时渲染

视频渲染的实现思路通过AVFoundation进行视频数据的采集,并将采集到的原始数据存储到CMSampleBufferRef中,即视频帧数据(视频帧其实本质也是一张图片)。通过CoreVideo将CMSampleBufferRef中存储的图像数据,转换为Metal可以直接使用的纹理。将Metal纹理进行渲染,并即刻显示到屏幕上。...

2021-03-13 16:08:42 927 1

原创 【数据结构与算法】之面试必考的“二分算法”系统梳理

一、整数二分整数二分说明整数二分即为在整数集合上的二分,常见的用法有:在单调序列中查找「某个数是否出现过」、「某个数最早出现的位置」以及「>= 某个数中最小的数」等。解决这类问题的思想非常统一,即对坐标区间不断进行折半,以此在 O(log(n)) 的时间复杂度内确定答案,但其「实现方法」却非常多样,由此导致很多同学在此类问题上出错。因此接下来将通过一个例题来介绍「记录 ans」的二分实现方法,该方法较易理解且不易出错。整数二分示例在排序数组中查找元素的第一个和最后一个位置。① 题目说

2021-03-04 04:06:53 300 5

Kotlin编写的示例spring引导应用程序

用kotlin编写的示例spring引导应用程序,使用spring引导执行器管理应用程序,并使用swagger2作为API文档

2023-08-10

Objective C之计算+load方法的耗时

使用 hook 监测 +load 执行时间方案,并结合 CocoaPods 实现一行代码集成耗时监测的功能。

2022-04-04

Objective C之Hook所有+load方法简单示例

详细地实现了Hook所有+load方法的流程:动态库LoadRuler的添加、获取MachO和所有类的关键代码,以及Category的处理等

2022-04-02

SwiftUI高级动画之路径Paths、几何效果GeometryEffect与AnimatableModifier的效果实现

本示例详细地实现了SwiftUI高级动画的路径Paths(形状路径如何动画化、如何创建可动画数据、如何用小数画边、如何设置多个参数的动画、超过两个可动画的参数、如何通过 VectorArithmetic 使自己的类型动画化等动画效果的实现),几何效果GeometryEffect(关键帧动画、动画反馈、跟随路径创建视图、ignoredByLayout() 方法等)以及AnimatableModifier等。

2022-03-05

SwiftUI之绘制徽章视图的路径和形状

本篇教程就是SwiftUI使用路径和形状创建徽章的过程,创建的徽章可以和其它图形组合形成位置标志。如果想要针对不同种类的地标创建不同的徽章,可以尝试改变徽章基本组成符号的重复次数、角度或大小。跟着教程一步步走,可以下载工程文件进行实践。

2022-01-29

SwiftUI之如何处理特定的数据和如何在视图中适配数据模型对象.zip

SwiftUI之详细地实现了如何标记特定的数据,如何过滤数据列表,如何添加控件来切换状态、如何使用可观察对象来存储数据,如何视图中适配数据模型对象等功能与逻辑

2021-12-20

SwiftUI之创建列表展示页和导航跳转详情页.zip

SwiftUI之详细的实现了如何创建行视图、自定义行预览、创建地标展示列表、创建动态列表、设置从列表页到详情页的页面导航等功能和逻辑实现

2021-12-19

SwiftUI之如何创建和组合视图.zip

详细地实现了SwiftUI如何定制文本视图(Text View),如何使用栈来组合视图,如何创建自定义图像视图,以及UIKit视图与SwiftUI视图混合使用等

2021-12-18

Python之俄罗斯方块源代码及程序.zip

Python实现的俄罗斯方块,具有单人模式、普通双人模式、镜像双人模式(即掉落方块都一样)、双人加速模式(每消去一行都会给对方加速)、双人交换控制模式(一次控制自己的方块,一次控制对方的)、双人平衡模式(会改变对方的容量)、双人单容器模式,并且游戏的界面设计也是相当简洁舒服。

2021-10-28

Python之Kivy乒乓球游戏的实现与kv规则.zip

Python Kivy实现乒乓球游戏和kv规则

2021-10-16

iOS之列表性能优化异步绘制.zip

iOS之列表性能优化异步绘制:不依赖任何第三方pod框架,主要从异步线程绘制、图片异步下载渲染等方面,尽可能优化UITableView的使用,提高滑动流畅性

2021-10-07

iOS之RSA加解密的方法实现.zip

集成了RSA生成密钥对、加载公钥、加载私钥、数据加密和数据解密等功能的工具类,iOS可以直接拖入工程使用RSA的加解密。

2021-09-06

HarmonyOS之基于Service Ability的启动、停止、连接、断开连接等操作及跨设备操作.zip

基于 Service 模板的 Ability(以下简称 "Service")主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行。

2021-08-11

HarmonyOS之音乐播放器展示前台Service的使用方法.zip

本示例通过音乐播放器,展示了前台Service的使用方法。一般情况下Service都是在后台运行的,后台Service优先级都是比较低的,当资源不足时,系统有可能回收正在运行的后台Service。一些场景下(如:播放音乐),用户希望应用一直运行,此时就需要用到前台Service。前台Service会使用保持正在运行的图标在系统状态栏显示。 本示例主界面分为三个按钮,点击Start Play按钮会启动前台服务并播放音乐,点击Pause Play按钮会暂停播放音乐,前台服务继续运行,点击Stop Play按钮会停止播放音乐并关闭前台服务。

2021-08-11

PageAbility.zip

Page 模板的 Ability,用于提供与用户交互的能力。一个 Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。跨设备迁移支持将 Page 在同一用户的不同设备间迁移,以便支持用户无缝切换的诉求。

2021-08-10

iOS之多环境的配置.zip

运用多target形式、多scheme方式以及 config 配置文件配置多环境的工程配置示例

2021-08-05

HarmonyOS之通过 Preferences 创建、删除、更新和查询应用程序偏好数据实现登录页面偏好数据存取及主页面背景色偏好数据存取.zip

轻量级偏好数据库主要提供轻量级Key-Value操作,支持本地应用存储少量数据。本示例通过 Preferences 创建、删除、更新和查询应用程序偏好数据,主要实现了登录页面偏好数据存取及主页面背景色偏好数据存取。 说明: 启动页面勾选不再显示,保存该偏好数据,下次启动应用不再显示该页面,直接进入模拟登录页面。 模拟登录页面输入用户名和密码,点击登录跳转到主页面,自动保存登录状态,下次不再显示模拟登录页面。 主页面点击应用背景色后,再点击对应颜色可保存背景色,点击清除偏好设置,清除已保存的背景色。

2021-08-03

HarmonyOS之实现对象关系映射数据库的升级、备份、删除、恢复以及表的增删改查.zip

本示例通过注解和继承来实现数据库和表的创建,实现了数据库的升级、备份、删除、恢复,实现了表的增删改查,并监听数据变化。 @Database注解,且继承了OrmDatabase的类,对应关系型数据库; @Entity注解,且继承了OrmObject的类,对应关系型数据库中的表; OrmContext实现数据库的升级、备份、删除、恢复,表的增删改查并监听数据变化。 说明: 点击插入按钮插入数据,点击更新按钮更新数据,点击删除按钮删除数据,点击查询按钮查询数据并显示查询结果; 点击升级按钮数据库升级,从版本1升级到3,会从1升级到2再从2升级到3; 点击备份按钮数据库备份,点击删除数据库按钮删除数据库,点击恢复按钮恢复数据库。

2021-08-03

HarmonyOS之基于Data Ability的关系型数据库操作方法.zip

本示例通过注解和继承来实现数据库和表的创建,实现了数据库的升级、备份、删除、恢复,实现了表的增删改查,并监听数据变化。 @Database注解,且继承了OrmDatabase的类,对应关系型数据库; @Entity注解,且继承了OrmObject的类,对应关系型数据库中的表; OrmContext实现数据库的升级、备份、删除、恢复,表的增删改查并监听数据变化。 使用说明: 点击插入按钮插入数据,点击更新按钮更新数据,点击删除按钮删除数据,点击查询按钮查询数据并显示查询结果; 点击升级按钮数据库升级,从版本1升级到3,会从1升级到2再从2升级到3; 点击备份按钮数据库备份,点击删除数据库按钮删除数据库,点击恢复按钮恢复数据库。

2021-08-02

HarmonyOS之演示生物特征识别应用于设备解锁、应用登录、支付等身份认证场景.zip

本示例演示了生物特征识别应用于设备解锁、应用登录、支付等身份认证场景。当前生物特征识别支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。

2021-08-02

HarmonyOS之演示照片/视频、位置、日历、麦克风的权限申请并通过访问相关业务确认授权是否成功.zip

本示例演示了照片/视频、位置、日历、麦克风的权限申请,并通过访问相关业务确认授权是否成功。应用权限是程序访问操作某种对象的许可。权限在应用层面要求明确定义且经用户授权,以便系统化地规范各类应用程序的行为准则与权限许可

2021-08-02

HarmonyOS之如何使用音视频播放控制框架实现音乐播放功能.zip

本示例展示了如何使用音视频播放控制框架实现音乐播放功能。主要功能包括了曲目播放、暂停、上一首、下一首、播放进度、跳转曲目列表等功能。曲目列表展示曲目名称,并选中播放曲目。 音视频播放控制框架,主要包括浏览器(AVBrowser)、控制器(AVController)、浏览器服务(AVBrowserService)、会话(AVSession)四部分组成。这四部分构成了音视频播放控制框架的核心。

2021-08-02

HarmonyOS之演示音频播放、音频采集、音量管理和短音播放等功能.zip

音频模块支持音频业务的开发,提供音频相关的功能,主要包括音频播放、音频采集、音量管理和短音播放等。 1、音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行管理。 2、音频采集的主要工作是通过输入设备将声音采集并转码为音频数据,同时对采集任务进行管理。 3、音量管理的主要工作是音量调节,输入/输出设备管理,注册音频中断、音频采集中断的回调等。 4、短音播放主要负责管理音频资源的加载与播放、tone音的生成与播放以及系统音播放。

2021-08-02

HarmonyOS之演示如何通过相机模块相关接口实现拍照、录像等功能.zip

相机模块支持相机业务的开发,可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。也可以通过合适的接口或者接口组合实现闪光灯控制、曝光时间控制、手动对焦和自动对焦控制、变焦控制、人脸识别以及更多的功能。

2021-08-02

HarmonyOS之Java UI的CustomLayout.zip

本示例演示了Java UI框架提供的自定义布局能力。在不同屏幕分辨率下对子组件进行测量,确定子组件的大小,在屏幕横向空间不足的情况下,下一个子组件将进行自动换行。 本示例仅支持在标准系统上运行,打开应用所展示的界面即为自定义的布局。

2021-08-02

HarmonyOS之演示帧动画、数值动画、属性动画和组合动画的实现.zip

动画是组件的基础特性之一,精心设计的动画使 UI 变化更直观,有助于改进应用程序的外观并改善用户体验。 1、帧动画是利用视觉暂留现象,将一系列静止的图片按序播放,给用户产生动画的效果。 2、AnimatorValue 数值从0到1变化,本身与 Component 无关。开发者可以设置0到1变化过程的属性,例如:时长、变化曲线、重复次数等,并通过值的变化改变组件的属性,实现组件的动画效果。 3、AnimatorProperty 可以为 Component 设置某个属性或多个属性而实现动画效果。

2021-08-02

HarmonyOS以长列表联系人为例,演示ListContainer组件的基本使用.zip

ListContainer是用来呈现连续、多行数据的组件,包含一系列相同类型的列表项。 本示例通过长列表联系人的案例来演示 ListContainer 组件的基本使用方法。

2021-08-02

CoreFoundation源码

CoreFoundation源码分析

2021-07-27

iOS自定义KVC的实现和使用.zip

完整地实现了iOS自定义KVC的流程和步骤,并备注详细的说明和解释,方便阅读和理解!

2021-06-05

Apple 可编译 objc 源码.zip

Apple可编译objc源码:可追踪查看的iOS的底层实现和相关源码,可以编译调试iOS相关的底层实现原理探索,深入了解iOS的低层封装和源码思想。

2020-09-15

OpenGL ES之手写绘画板.zip

OpenGL ES之手写绘画板:详细的实现了PaintView的画笔的颜色、尺寸、笔触等设定切换,并运用OpenGL ES自定义着色器实现画板曲线的绘制,并实现了重做、重绘、橡皮擦、撤销、清除等逻辑的实现。

2020-09-09

RxSwift基本使用.zip

详细的介绍了RxSwift的安装和配置,并实现了部分控件的基本使用,包含“监听单个 textField 内容的变化(文本响应)”、“实现UIButton点击响应”、“定时器”、“KVO”、“手势”、“通知”等RxSwift的简化写法,代码更简洁,易读性更高。

2020-09-04

GLSL之“大长腿”美颜效果.zip

GLSL之“大长腿”美颜效果:详细地实现了图片的“大长腿”的效果,获取纹理的高度, 并根据纹理的高度以及宽度, 计算出图片合理的宽度;根据当前控件尺寸和纹理尺寸,计算初始纹理坐标等重点逻辑的详细实现和注释讲解

2020-08-29

Metal之MTLBuffer批量加载顶点数量较多的图形渲染.zip

Metal之MTLBuffer批量加载顶点数量较多的图形渲染: 详细的实现了完整的逻辑和详尽的注释说明, 以及顶点数据的存储方式以及它们的应用场景

2020-08-28

Metal之基于世界坐标系下渲染三角形.zip

Metal渲染三角形是基于世界坐标系下的渲染显示,运用Metal着色器、CJLRenderer渲染循环类等实现彩色三角形的渲染显示

2020-08-26

Metal之动态切换屏幕颜色.zip

Metal之动态切换屏幕颜色:详细地实现了运用Metal实现颜色动态渲染和屏幕的颜色自动切换功能,并配置详细的注释和逻辑实现流程

2020-08-25

Swift之“索引”快速定位.zip

Swift之“索引”快速定位:详细的实现了给TableView新增“索引”数组快速定位查找,按照“首字母”的顺序排列展示数据.

2020-08-25

Swift之Internationalization处理及App内切换.zip

Swift之Internationalization:详细的实现了Swift版本地国际化处理和在App内的语言切换实现逻辑,并封装了语言切换辅助类,可直接拖入工程使用,实现App内的快速语言切换

2020-08-25

OpenEL GS滤镜处理(缩放滤镜、灵魂出窍滤镜、抖动滤镜、闪白滤镜、毛刺滤镜、幻觉滤镜).zip

详细地介绍了缩放滤镜、灵魂出窍滤镜、抖动滤镜、闪白滤镜、毛刺滤镜、幻觉滤镜实现原理和实现流程,并详细的注释说明的代码逻辑。

2020-08-22

GLSL滤镜之马赛克.zip

OpenGL ES之运用GLSL详细的实现了“灰度马赛克 ”、“颠倒马赛赛克”、“方形马赛克”、“六边形马赛克”、“三角形马赛克”滤镜效果的详细实现和注释说明

2020-08-21

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

TA关注的人

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