David'Blog


  • 首页

  • 标签

  • 分类

  • 归档

初涉Xcode插件开发

发表于 2020-07-23 | 分类于 工程上的二三事
我二十几岁我好累.jpg,这几个月换完工作后都没时间学习提升了。这里整理一下近期新学到的一点点工程技术——Xcode插件开发。 Xcode插件开发Xcode的插件目前有两种方式: Xcode Extension (官方发布的一种App Extension,基于XcodeKit框架实现,独立进程) Xcode Plugin(Xcode8以前的可直接支持的,目前是需要一些特殊手段才能加载运行起来) ...
阅读全文 »

从函数指针开始的回调编程

发表于 2020-04-28 | 分类于 工作原理
在日常编码工作中肯定会接触一个基础概念——回调。 在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。 可以看到回调这个概念实际上是编程思想中依赖翻转(Dependency Injection)设计原则的体现。 在不同 ...
阅读全文 »

从ARKit上找到你的人脸

发表于 2020-04-23 | 分类于 图像处理
这几年Apple一致再大力推动AR这个方向的应用,正好我对于AR渲染、人脸检测等技术应用都有一些兴趣,这里就利用这个ARKitDemo工程来探究一下ARKit的人脸跟踪的能力。 在Apple的Tracking and Visualizing Faces工程中内置了一张2048*2048的2D标准Facemesh,在常规的人脸贴图应用就可以通过这张Facemesh来制作特定的效果。 后来发现ARKi ...
阅读全文 »

Crash及其分析技巧的一点心得

发表于 2020-04-16 | 分类于 工程上的二三事
这篇文档用于总结日常工作中如何分析Crash Report的一些思路,首先我们可以从官方文档得到一些关于Crash Report的基本情况。 一份完整的Crash Report(已符号化过)中包含的几部分信息中,头部描述信息和线程调用堆栈是我们最为关注的两个部分。 通过这两部分可以获知这次崩溃现场的触发原因和线程回溯,然后通过这些信息我们就可以开始动手修复这份Crash了。接下来先来看几类在工作中 ...
阅读全文 »

iOS中的并发编程与GCD的一些认知

发表于 2020-02-04 | 分类于 工作原理
在现代的计算机系统中CPU是多核多线程的架构,理论上我们可以在同一时间同时执行多条指令。而在软件设计中为了达到这个目的就发明了许多的并发编程方案。 其中在iOS中主要存在四个并发编程方案:pthread、NSThread、GCD、NSOperation。这里借用以下这张图来描述它们各自的主要特征。可以看到pthread和NSThread实际上就是线程这个概念在iOS中的抽象,使用这两个库需要开发者 ...
阅读全文 »

免99刀开发iOS应用——解锁App的高级能力

发表于 2020-01-02 | 分类于 工程上的二三事
众所周知成为iOS开发者是有成本的,开发App交钱和没交钱也会被区别对待。查一查App-Capabilities这张表里面的功能中一些高级功能都是需要成为付费用户才能够进行开发的。 如果只是想要学一学相关框架应用或者是技术验证而不上架Appstore的话,交这99刀就有些浪费了。不过假设你和我一样拥有一台越狱设备的话,完全可以通过技术手段来绕开这些限制。 安装必要越狱插件在进行修改App授权设备能 ...
阅读全文 »

入坑SwiftUI

发表于 2019-12-24 | 分类于 框架学习
今年推出的SwitUI可以说是一个十分重量级的界面编程框架,它是首批完全使用Swift编写的系统级框架,使用声明式编程语法(这也是近年来界面编程的一种趋势),与Xcode11深度结合动态预览等等新特性都值得每一个iOS开发者来学习一下。 声明式编程范式区别于UIKit的传统指令式编程范式的界面编程,在SwiftUI中使用的是声明式的编程范式。直观上就是为了支持声明式的编程范式,Swift语法上引入 ...
阅读全文 »

iOS并发编程之Runloop

发表于 2019-10-17 | 分类于 工作原理
同学,听过while(1){}吗?在iOS系统中存在这么一套线程事件驱动模型——Runloop,用于高效的循环处理事件。接下来让我们从官方文档开始深入学习Runloop的一些话题。 在iOS系统中系统默认为主线程开启了Runloop,而其他线程默认不开启Runloop事件循环机制。 Runloop的设计细节在Runloop中有两类的事件触发源:输入源(Input Sources)和定时器源(Tim ...
阅读全文 »

iOS中的内存布局与管理

发表于 2019-10-12 | 分类于 工作原理
内存——它的硬件实体称作RAM(随机存储器),它的基本特点就是和CPU数据交换速度快、断电易失。在iPhone这类嵌入式设备上通常被认为是资源有限(目前最大的容量也才4GB),而iOS中又该如何高效的利用这一块存储器呢? 让我们从官方文档: Advanced Memory Management Programming Guide Memory Management Programming Gui ...
阅读全文 »

iOS中的Key-Value-Coding

发表于 2019-09-01 | 分类于 工作原理
之前系统性的把Objective-C的Runtime机制过了一遍,深感iOS编码中强大的动态特性。接下来学一下也时常可以用到的另外一个动态能力KVC,打开官方文档Key-Value-Coding第一句描述给它的定义就是KVC是一种利用NSKeyValueCoding协议实现的允许对象间接访问它属性的机制。 我们打开Foundation中NSKeyValueCoding.h这个文件,果不其然它的定义 ...
阅读全文 »
12…4

David Dai

31 日志
4 分类
7 标签
© 2020 David Dai
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4