自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coulnaut的博客

人生是一场修行

  • 博客(161)
  • 收藏
  • 关注

原创 iOS视频捕获进阶篇

前面【iOS视频捕获实践篇】制作了一个简单拍照和视频录制的相机,事实上,大多数app都有扫码的功能,因此仅仅一个相机是不够的。本篇文章来对前面的相机做一个升级,对拍照界面增人脸检测与追踪的功能。

2022-09-16 11:10:29 751 1

原创 iOS视频捕获实践篇

这里只是介绍了我们怎么来使用前面介绍的api,如果有需要更高级的相机,还需要去深入挖掘学习AVFoundation中媒体捕获的内容。

2022-09-08 16:03:53 1550

原创 iOS视频捕获入门篇

AVFoundation 是 OSX 系统和 iOS 系统中用于处理基于时间的媒体数据的高级框架,AVFoundation的设计过程高度依赖多线程机制,充分利用多核硬件优势,大量使用 Block 和 GCD 机制将运算任务放在子线程,且提供硬件加速确保最佳性能。

2022-09-02 14:53:39 1289

原创 打造一款自己的XCode

俗话说磨刀不误砍柴工。如何打造一款属于自己好XCode,我们可以从外观与使用便捷入手。1. 主题路径为:Xcode -> Preference -> Themes,看到如下界面。我们点击左下角的加号,可以复制一份配置出来,然后我们自己再重新配置。下面的单词也都很简单。如:背景色,当前行颜色,选中时背景色,光标颜色,最后一个不是很清楚。当源代码编辑区配置完成后,同理,我们可以编辑命令行控制区。最后放一个网站在这里,有一些主题供你选择。XCode 主题2. 改键快捷键可以去网上搜.

2022-04-25 11:42:53 431

原创 GitHub多账号管理

如何在一个主机上使用多个github账号?1. 背景在工作时,不管是使用gitlab还是公司自己基于git建立的代码托管系统,我们都会拥有一个使用公司邮箱注册一个github账号。但我们总归需要有自己的‘私人空间’,比如自己写一些demo,或者作为云盘等。此时就需要一台电脑管理 2个及以上的github账号。**注:一定要关注公司的围墙红线,不要将公司相关资产上传至github等公共场所**注:一定要关注公司的围墙红线,不要将公司相关资产上传至github等公共场所**注:一定要关注公司的围墙.

2022-04-23 15:53:19 1547

原创 C++实现设计模式总结

23中设计模式已经总结完毕,是时候总结一下了。文章目录1. 系列博文2. 设计模式分类总结3. 设计模式的经验之谈4. 附录1. 系列博文【系列博文地址,右击在新标签页中打开链接】2. 设计模式分类总结  这里不再是从结构型,行为型,创建型三个类型进行分类,而是从变化与稳定的角度中进行分类,因为变化与稳定是设计模式的最终目的,也是本次系列博文一直在贯彻的。组件协作:模板方法__Template Method策略模式__Strategy观察者模式__Observer/Event对.

2021-06-17 20:05:14 199

原创 C++实现解析器模式

第23个设计模式文章目录

2021-06-14 16:43:14 559

原创 C++实现访问者模式

文章目录1. 情景与意图2. 访问者模式3. 类的访问4. 大总结1. 情景与意图  在一些编程语言中,提供了分类和类扩展这样的语法,分类就是将类按照某一些特定的规则分成分区,这样方便阅读。举个例子,有一个People类,我们可以将该类建立分类,分为student,teacher,employee三个分类。注意分类不是子类,而是一个类建立了分区而已。这样的好处就是,职责清晰,逻辑明了。  在日常的开发中,我们可能需要对一些类有一些访问的操作,但是我们不希望直接添加到类中,因为这样会破坏原有的封装。.

2021-06-14 16:17:15 205

原创 C++实现命令模式

文章目录1. 情景与意图1. 情景与意图  如果学习过Linux操作系统的同学会知道,使用Linux操作系统的同学一般是不会用鼠标点来点去,虽然是带有桌面的,我们通常是使用命令的方式。说到这,如果有对Linux操作系统感兴趣的话,欢迎关注【Linux操作系统学习系列】。...

2021-06-11 16:07:52 320

原创 C++实现职责链模式

文章目录1. 情景与意图2. 职责链设计模式3. 视图事件的响应链4. 总结1. 情景与意图  公司老板在使用你们团队写的app时,发现了一个bug。但是领导不知道这个app是哪个团队在维护,于是领导让逐级向下反馈,最终反馈到了你们的团队,发现时你引入的,于是你开始响应,并修复这个bug。  在上面的传递中,其实就是一个职责链,修复bug这个反馈,逐级传递,在这个链路上有很多的对象都可以收到,但是只有一个对象可以进行相应。  对于应用程序也是的,每个视图都是具有层级的,当鼠标或者手指点击事件产生.

2021-06-06 17:21:19 166

原创 C++实现迭代器模式

文章目录1. 情景与意图2. 迭代器模式3. 容器迭代器4. 总结1. 情景与意图  在STL的六大组件中,其中一个组件就是 迭代器。可见迭代器的使用场景和作用都是非常大的,在STL的容器中都实现了自己的迭代器。迭代器,顾名思义,就是和为了方便遍历而提供的一中手段,我们对于自己实现的容器或者其他对象,应该怎样设计自己的迭代器呢?——迭代器设计模式。2. 迭代器模式  提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。  就是不暴露对象细节的情境下,提供以恶搞顺序遍历的.

2021-06-06 00:46:58 666

原创 C++实现组合模式

接下来4个模式是非常有趣的设计模式,同属于一个类型。文章目录1. 情景与意图1. 情景与意图  

2021-06-05 23:59:48 359

原创 C++实现备忘录设计模式

文章目录1. 情景与意图2. 备忘录模式3. 备忘录4. 大总结1. 情景与意图  在我们平时打游戏的时候,为了避免任务完成失败重头的悲剧,我们通常会存档,失败后或者退出游戏后,下次进来我们会读档。这就是一个备忘的功能。  在日常的开发中,我们有时候需要距离对象的某些状态,在对象执行完一些行为后,返回这些状态。应该怎样来设计这样的开发呢?备忘录模式2. 备忘录模式  在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。  概念不.

2021-06-04 18:59:18 287

原创 C++实现状态模式

下面我们开始一个新的类型系列模型。文章目录1. 情景与意图2. 状态模式3. 文件的状态4. 总结1. 情景与意图  一个对象可以有很多的状态,不同的状态,对象就会有不同的行为。比如文件如果是只读的状态,那么就只能读不能写入,如果是只写的,那就不能读,再或者是读写的。在对象的状态改变时,其可以支持的行为也应该改变。  如何实现这个设计——状态模式。2. 状态模式  允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。  其实就是说,不同状态不同行为切换。行为可以是表现形式.

2021-06-04 16:49:39 385

原创 C++实现中介者模式

好了,这是这类型设计模式的最后一个,最后一小节进行大总结。文章目录1. 情景与意图2. 中介者模式3. MVC4. 大总结1. 情景与意图  其实看到这个名字,也能对这个设计模式有了一个初步的印象,在我们日常生活中,通常有租房,买房,卖房的需求,这个过程比较漫长和消耗时间,因此我们通常会交给中介去处理,我们不用面对很多人,只用和中介通信即可。  在我们的工程中,也会存在对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同.

2021-05-30 17:08:23 230

原创 C++实现适配器模式

STL中的stack和queue就是典型的适配器文章目录1. 情景与意图2. 适配器模式3. stack4. 总结1. 情景与意图  在我们的日常生活中就有很多的适配器接口,比如mac电脑仅仅提供了两个type-c的接口,但是我们需要连接显示器,或者usb等等,此时就需要一个适配器接口,将type-c接口转换成我们能用的接口。在C++的STL中,我们有时候需要FIFO或者LIFO的数据结构,此时我们将双端队列进行封装成我们想要的stack和queue。  适配器模式主要解决在软件系统中,常常要将.

2021-05-30 15:47:10 260

原创 C++实现代理模式

下面带来一个常用的设计模式——代理模式文章目录1. 情景与意图2. 代理模式1. 情景与意图  还记的模板方法模式,有一种说法叫晚绑定。晚绑定其实就是无法预知与后面未知的进行通信,也就是说无法直接访问或者达到某个目的。如果了解UIKit,其中常用的一个UITableView,它主要作用与通讯录列表,好友列表等UI,我们在创建一个这样的UI的时候,它是不知道我们一共有多少联系人,QQ好友等。因此它有一个dataSourceDelegate,就是数据代理,用它来获取数据。  现实中比如你想买国外的一.

2021-05-27 21:51:56 247

原创 KVC实现自定义数据model

  从网络数据中拿到json序列化后的数据后,我们需要将数据转换成OC的对象,在项目中会自己建立一个数据model,然后解析拿到的数据。但是每次写解析过程都是无聊枯燥的,因此我们可以使用KVC的方式让其自己解析。这里会说到原生KVC和第三方框架JSONModel。文章目录1. KVC2. Foundation KVC API1. KVC  KVC(Key-value coding)键值编码,就是和键值对有关,用Key去操作value,这个操作就是增删查改等。iOS的开发中,借助runtime机制的.

2021-05-26 15:02:24 230 2

原创 iOS沙盒与数据的转换与处理

引言:本篇博文主要介绍iOS文件处理,包括NSData,沙盒,常用文件路径,NSBundle的介绍。文章目录1. iOS的沙盒机制1.2 沙盒1.2 Bundle Container1. NSData2.1. iOS的沙盒机制1.2 沙盒  苹果公司为了限制对应用程序中系统资源和用户数据的访问,以在应用程序受到损害时控制损害,推出了沙盒机制。  应用程序沙盒通过限制应用程序对通过授权请求的资源的访问,为系统资源和用户数据提供保护。再把App SandBox放大:1.2 Bundle C.

2021-05-23 12:03:38 341

原创 C++实现门面模式

新的类型,这一类型有 4 种,我们慢慢看。文章目录情景与意图门面模式情景与意图  假设我们要提供一个某一个功能的SDK,比如语音处理相关的,合成,解析等等。在别人使用的时候应该是使用我们提供的接口,而不应该直接使用我们内部的细节方法。  在日常开发中,总会发生一些组件或者程序的调用方与组件或程序的子模块发生耦合,这样的设计就违法了面向对象的依赖倒置原则与接口隔离原则。  于是,门面设计模式应运而生。门面模式  隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。  ...

2021-05-17 22:34:22 231 7

原创 C++实现享元模式

简单的享元模式。文章目录1. 情景与意图2. 享元模式3. 图片id4. 大总结1. 情景与意图  假设我们每次去写作业的时候,都去买一支笔,那么文具盒总会有撑爆的一天。另外常量字符串我们都知道在创建后,及时生命周期结束,也并不会立即被销毁,而是还是存在内存中,当下次使用的时候,直接拿到就可以。  在日常开发中,如果我们在使用某些细腻度较高的对象时候,都去创建,内存总会有还没有及时销毁的对象,但是依旧占着内存。因此我们需要一种设计来解决这个问题。2. 享元模式  运用共享技术有效地支持大量细.

2021-05-08 10:34:00 285

原创 C++实现单例模式

这一类型的模式都很熟悉,都用过,比较简单文章目录1. 单例模式1. 单例模式

2021-04-22 20:00:00 200

原创 C++实现建造者模式

本类型的最后一个模式,最后一节进行总结。文章目录1. 建造者模式2. 构建器建造房子3. 大总结1. 建造者模式  将一个复杂的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同(变化)的表示。建造者模式或者说构建起模式,构建过程就是设计模式一直强调的就是依赖稳定,不同的创建表示就是变化。  看到后面的实现过程,可能心中会有一个疑问,**建造者模式和模板方法模式有什么区别?**这个问题其实在实现的过程中也许就已经有答案,我会在最后进行做出自己的解释欢迎探讨。2. 构建器建造房子  假.

2021-04-22 15:01:09 278

原创 C++实现原型模式

拷贝构造和原型模式有什么区别?文章目录1. 原型模式2. 克隆动物3. 总结1. 原型模式  用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。  这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。类似于拷贝构造的操作。  当学习这个模式的时候,心里肯定会有一个疑问,就是这个和拷贝构造有什么区别?这个在后面进行解释。2. 克隆动物我们先通过代码,来认识一下原型模式。我们有一个抽象的动物类。class DPAbstra.

2021-04-20 16:01:02 181

原创 C++实现抽象工厂模式

源代码仓库地址本篇文章主要用介绍用C++实现的设计模式,博文主要呈现逻辑和结构,单独设计模式的代码在每个模式的的【代码分析】结尾有链接,所有模式的具体源代码请访问上面的仓库地址。文章目录1. 设计模式介绍2. 简单工厂模式2.1 模式介绍2.2 模式图解2.3 代码分析2.4 简单工厂模式总结3. 抽象工厂模式3.1 模式介绍3.2 模式图解3.3 代码分析3.4 抽象工厂模式总结1. 设计模式介绍   设计模式其实是一套提高代码复用性,健壮性,可维护性等一系列优化编程的结局方案,是代码美观,安.

2021-04-18 15:52:32 564

原创 C++实现简单工厂模式与工厂方法模式

后面介绍的几种设计模式同属一种类型。由于简单工厂和工厂方法简单和类似,因此先来介绍文章目录1. 简单工厂模式2. 实现手机工厂3. 工厂方法模式4. 工厂方法模式实现手机工厂5. 总结1. 简单工厂模式  定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。  简单的说就是绕开通过new的这种方式,隐藏创建细节。通过接口来创建对象。2. 实现手机工厂  当前手机市场有众多品牌手机,消费者只在意拿到手机,而不会去在乎一台手机是怎么被生产出来的。直接用.

2021-04-17 18:52:19 250 2

原创 C++实现桥接模式

桥接模式和装饰器模式属于统一个类型,下面来看看文章目录1. 桥接模式2. 手机的APP3. 代码实现4. 大总结1. 桥接模式  将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。  桥接模式解决的问题其实和装饰器模式解决的问题很类似。在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。2. 手机的APP  举两个个例子来理解一下。  一个APP公司为了让自己APP允许在主流的系统上,当前系统主流有iOS系统、andriod系统、Windows、OS.

2021-04-17 16:44:21 521

原创 C++实现装饰器模式

前三种设计模式属于组件协作类模式,下

2021-04-16 15:59:09 390

原创 C++实现观察者模式

文章目录1. 观察者模式2. 老板与员工3. 大总结1. 观察者模式  定义对象间的一种一对多(变化)的依赖关系,以便当一 对象(Subject)的状态发生改变时,所有依赖于它的对象都 得到通知并自动更新。  观察者模式是在定义是很好理解的,比如班主任走进教室,教室里面的学生的状态都会发生变化。比如玩手机的把手机收起来,大声说话的安静起来,互相嬉戏的停下来。  在实际的应用中,比如一个APP的主界面定义了四个按钮,当手机的方向发生变化时,按钮的方向也发生变化。2. 老板与员工  假设现在有Q.

2021-04-12 17:03:37 347

原创 C++实现策略模式

文章目录1. 策略模式2. 计算器程序3. 策略模式4. 总结1. 策略模式定义一系列算法,把它们一个个封装起来,并且使它们可互 相替换(变化)。该模式使得算法可独立于使用它的客户程 序(稳定)而变化(扩展,子类化)。2. 计算器程序假设现在要写一个计算机的程序,那么一开始可能都会这样写:double calculate(double left, double right, char symbol, char* error) { // 演示不做安全判断 if (symbol == '+'.

2021-04-06 20:10:50 343

原创 C++实现模板方法模式

先用一个简单的模式来引入。文章目录1. 须知2. 模板方法模式1. 须知本系列的博文的设计模式类型不从创建型,结构型,行为型三个方向进行介绍,而是从封装变化角度对模式分类。具体分类不在这里说明,而是在适当的时候会进行总结,一并介绍。2. 模板方法模式...

2021-04-05 18:02:41 329

原创 C++实现设计模式引入

源代码仓库地址本篇文章主要用介绍用C++实现的设计模式,博文主要呈现逻辑和结构,具体源代码请访问上面的仓库地址。文章目录设计模式介绍工厂模式设计模式介绍设计模式其实是一套提高代码复用性,健壮性,可维护性等一系列优化编程的结局方案,是代码美观,安全。本质就是对面向对象设计原则的实际运用。实现一下设计模式,对其理解会更加深刻,也是对面向对象特性的充分理解。下面的模式介绍,不按照分类,而是从学习的角度去理解和掌握。毕竟即使列出表格也不一定能记住。工厂模式工厂就是制造,用于生产,下面我们来看看一看.

2021-03-29 20:32:21 349

原创 CALayer的contents系列属性

其实不管是什么UIView,在显示的时候都变成了一张图片。在前一篇说到UIView的绘图都是内部的CALayer的作用。CALayer的内部又有一个属性叫contens。我们称之为寄宿图。本篇文章主要介绍一系列有关contents的属性。1. contents属性首先从contents属性开始说起,网上其实关于contents的讨论还是比较多的,它就是用来显示最终被渲染成的图片。这里只总结关于它是 id 类型的事情。这个id类型其实只能是在OS X中使用,NSImage,你要是赋值UIIImage.

2021-03-23 11:32:44 779

原创 iOS中的图像大小

在移动端开发中,对于屏幕的适配是一件头痛的事情,相对来说iOS的适配还是很容易实现的。现在来说一说在iOS中的图像大小问题。1. iOS中的一些高度在iPhone X发布后,iOS开发时就需要主要顶部与底部高度的适配。在顶部,增加了刘海,因此导航栏的高度就相应变高了。在底部,增加了安全距离,因此底部也变高了,具体如下代码获取:#define kIs_iphone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)#define.

2021-03-21 19:02:48 1137

原创 图层

深知苹果的动画是世界一流的,因此从本篇文章开始,将陆续发出iOS有关的图层与动画相关的学习总结。目录文章目录1. Core Animation2. 图层与视图2.1 视图2.2 CALayer1. Core AnimationCore Animation的前身是Layer Kit。本身并不是真正做动画的,下面看看官方提供的Core Animation在框架中的结构位置:了解完这个, 再看看Core Animation的继承树:(好家伙, 官网这个图有问题, 我P了一下)先来简单介绍一下.

2021-03-14 17:29:56 173

原创 iOS的动画一篇入门

输出一篇关于core animation的读书笔记,书籍为《iOS Core Animation: Advanced Techniques 中文译本》。旨在记录与讨论core animation的知识,不记录基ccccc础知识。1. 图层与视图1.1 CALayer图层每一个UIView对象中都有一个CALayer对象。我们知道,IOS 中所有的视图UIView都是基于UIView派生的,UIView可以处理与用户的交互,而内容渲染都是交给CALayer对象的。当然UIView的另一个作用就是创.

2021-03-08 10:42:31 337 2

原创 一篇入门swift的学习笔记

文章目录1. 读后概述2. 部分语法梳理2.1 说明2.2 基础类型2.3 运算符2.4 字符与字符串2.4 控制流2.5 函数2.6 闭包2.7 枚举、结构体、类2.8 类的构造与析构2.9 属性监听器2.10 类的继承2.11 访问控制2.12 扩展与协议2.10 泛型3. 总结1. 读后概述阅读完《the swift programming language 中文版》,对swift语言有了初步的认识。在特点是:swift既是项目开发的编程语言,又有脚本语言的特点;在学习上:swift可以在xcod

2021-03-01 10:10:12 8013 10

原创 GCD的讨论

本文重在讨论苹果公司在IOS4引入的全新多线程编程技术——GCD。一个人理解来说一说GCD。文章目录1. 引入GCD2. GCD的任务与队列2.1 任务2.2 队列3. GCD的基本使用3.1 创建队列3.2 任务的追加3.3 队列的获取3.3 组合3.3.1 同步执行 + 并发队列3.3.2 异步执行 + 并发队列3.3.3 同步执行 + 串行队列3.3.4 异步执行 + 串行队列3.3.5 同步执行 + 主队列3.3.6 异步执行 + 主队列1. 引入GCD​ 首先在学习GCD之前,一定要对线.

2020-11-23 20:22:30 130

原创 新XCode的环境配置

如果遇到了:Xcode11 Could not find a storyboard named 'MainStoryBoard' in bundle NSBundle本文可以帮助你解决。

2020-10-26 17:43:44 851

原创 配置Charles一步到位

Charles是工作中经常要用的一个抓包工具。在配置的过程可能少许麻烦,而且网络上的教程千奇百怪,五花八门,总是找不到自己想要,这里记录一篇简单的教程,对于遇到问题慢慢补充。文章目录1. Charles2. 配置3. mapLocal1. Charles如果用过wireshark,或者Fiddler,那么Charles也不会陌生。他们都是抓包工具。原理就是让自己成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用.

2020-10-16 16:07:56 312

空空如也

空空如也

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

TA关注的人

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