- 博客(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
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
CSDN的markdown语法如何在表格中如何插入图片?
2021-07-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人