自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 音视频的采集

概述音视频采集是直播架构的第一环,是视频的来源其实视频的采集有多个应用场景:比如二维码开发音视频采集包括两部分视频采集音频采集在iOS开发中,是可以同步采集视频&音频的,使用方式也非常简单相关的采集API都封装在AVFoundation框架中,导入对应框架,实现功能即可采集步骤相关API主要在AVFoundation框架中,因此需要先导入框架创建捕捉会话(AVCaptureSession)该会话用于连接之后的输入源&输出源输入源:摄像头&

2022-04-08 12:40:49 589

原创 视频技术概述

直播的技术直播技术概括来说,可以分为 采集,前处理,编码,传输,解码,渲染 这几个环节音视频采集音视频的采集是直播架构的第一个环节,也是直播的视频来源采集的来源包括:PC端:屏幕摄像头(摄像头驱动适配)iOS端:摄像头采集(屏幕采集)Android端:屏幕摄像头采集(硬件过多)前处理使用美颜相机&美图秀秀已经是网络发照片&发视频必备技能了80%的主播没有美颜简直不能看(当然还是有美女的)不能看如何吸引用户&观众对视频进行美颜,已成标配.

2022-04-08 11:40:41 310

原创 iOS 粒子动画

iOS 粒子效果的原生展示

2022-03-25 13:28:10 310

原创 Object-C语法

Object-C语言基础

2022-01-06 12:41:02 3708

原创 Mac 常用软件安装

长期更新Homebrew使用国内的源: 引用地址/bin/zsh -c “$(curl -fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)”常用的几个brew命令本地软件库列表:brew ls查找软件:brew search google(其中google替换为要查找的关键字)查看brew版本:brew -v更新brew版本:brew update安装cask软件:brew install --cas

2021-12-16 22:22:53 298

原创 iOS 15 更新

适配iOS 15 列表头部高度if (@available(iOS 15.0, *)) { UITableView.appearance.sectionHeaderTopPadding = 0.0 }适配导航栏if #available(iOS 15, *) { let app = UINavigationBarAppearance() // 重置背景和阴影的颜色 app.configureWithOpaqueBackgroun

2021-11-01 16:32:57 90

原创 Xcode 常用

获取app的启动日志给Xcode添加环境变量:Edit scheme… -> Run -> Arguments -> Environment Variables获取粗略的启动时间分析:添加Name为DYLD_PRINT_STATISTICS,Value为1Total pre-main time: 510.95 milliseconds (100.0%)dylib loading time: 121.92 milliseconds (23.8%)rebase/binding ti

2021-09-29 10:19:55 141

原创 获取当前时间之前的年月数据

获取当前时间之前的年月数据/// @param min: 从当前时间往前多少个月份/// @return: 返回年月时间字符串的数组func getDateYearMonths(min: NSInteger) -> [String] { var data: [String] = [] //当前日期时间 let currentDate = Date() //设定数据格式为xxxx-mm let formatter = DateFormatter()

2021-06-23 11:04:09 399

原创 OC对象的本质

我们平时编写的Objective-C代码,底层实现其实都是C\C++代码所以Objective-C的面向对象都是基于CC++的数据结构实现的(结构体)将Objective-C代码转换为C\C++代码xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件如果需要链接其他框架,使用-framework参数。比如-framework UIKit什么平台的代码不同平台支持的代码肯定是不一样Windo

2021-03-19 10:36:56 67

原创 Flutter 生命周期

组件 Widget一个 Flutter 组件,包含了组件的模板、样式和交互等内容,外部只要按照组件设定的属性、函数及事件处理等进行调用即可,完全不用考虑组件的内部实现逻辑。其中组件又包括无状态组件和有状态组件。无状态组件无状态组件,可以理解为将外部传入的数据转化为界面展示的内容,只会渲染一次有状态组件有状态组件,是定义交互逻辑和业务数据,可以理解为具有动态可交互的内容界面,会根据数据的变化进行多次渲染。生命周期在原生 Android 、原生 iOS 、前端 React 或者 Vue

2021-03-17 13:17:34 353

原创 Flutter代码规范

命名规范AaBb 类规范,首字母大写驼峰命名法,例如 IsClassName,常用于类的命名。aaBb 类规范,首字母小写驼峰命名法,例如 isParameterName,常用于常量以及变量命名。aa_bb 类规范,小写字母下划线连接法,例如 is_a_flutter_file_name,常用于文件及文件夹命名。注释规范注释的目的是生成我们需要的文档,从而增强项目的可维护性单行注释单行注释主要是“ // ”这类标示的注释方法,这类注释与其他各类语言使用的规范一致。单行注释主要对于单行代码逻辑进

2021-03-17 11:16:17 466

原创 移动端地图导航路径规划文档

路线规划:链接: 文档地址.

2021-03-15 11:06:08 193

原创 Ruby统一环境

rbenv在iOS开发中我们在后期会用到CocoaPods、Fastlane 等第三方 Ruby 工具,为了自动化安装和管理这些工具,整个项目团队所使用的 Ruby 版本也必须保持一致。为此,我们就需要用到 Ruby 环境管理工具。目前流行的 Ruby 环境管理工具有 RVM 和 rbenv。我们用的是 rbenv,因为它使用 shims 文件夹来分离各个 Ruby 版本,相对于 RVM 更加轻装而方便使用。千万注意,团队内部不要同时使用不同的 Ruby 环境管理工具,否则项目编译会出错。rben

2021-03-11 10:33:32 253

原创 Swift 样式匹配方式

使用where约束条件for i in 1...10 where i % 2 == 0 { print(i)}where用在更复杂的value binding语句里enum Power { case fullyCharged case normal(percentage: Double) case outOfPower}let battery = Power.normal(percentage: 0.1)//这样,我们就可以在绑定.normal associ

2020-11-18 14:06:59 97

原创 一目了然的UIStackView

UIStackViewAPI介绍

2020-10-16 16:03:55 268

原创 attempt to scroll to invalid index path

当我们在使用UICollectionView的时候会将指定的位置移动到可见区域的中间位置?如果在使用UICollectionView.scrollToItem(at: index, at: .centeredHorizontally, animated: true)之前要调用UICollectionView.reloadData()可能会收到一个错误attempt to scrol...

2019-12-04 13:39:52 2149

原创 PS软件基础操作

常用的四种格式JPG 压缩格式PNG 透明格式:包含有透明像素的格式GIF 动态格式PSD 图层格式:ps源文件格式 包含两个以上的图层打开文件的方法在文件菜单中点击打开文件 Ctrl + O直接在灰色区域双击工作区直接拖拽到工作区(当前没有打开其他图片的时候)直接拖拽到工作区上面的导航区新建文件Ctrl + N注意事项文档名称规范 一般根据设计的文档文档类型...

2019-12-04 13:27:21 368

原创 时态一

任何一句话都有时态;时态:分为时间和特点时间:现在过去将来过去将来特点:一般完成进行完成进行两两一组一共十六种时态。其中过去将来刚开始的时候也用不上,在一个容易造成混淆;所以先学习十二种。一般现在时: do/does一般过去: did一般将来:be going to do现在进行:be doing疑问句的中文公式疑问词 + 时表词 + 主语 + 句剩...

2019-12-01 19:48:56 182

原创 iOS 状态栏的那些事

info.plist中的View controller-based status bar appearance当取值为YES时,表示控制器对状态栏的设置的优先级高于通过application对状态栏进行的设置当取值为NO时,则以application为准,控制器设置状态栏preferredStatusBarStyle是无效的的根本不会被调用。在开发中要根据实际情况来设置View contr...

2019-11-22 14:05:43 120

原创 多线程(三)

创建并使用额外的Serial Queue一个serial queue和主线程使用的队列是非常类似的:主线程队列可以和多个serial queue并行执行;// Create a serial queuelet serialQueue1 = DispatchQueue(label: "images")其中,label第一个参数是serial queue的名字;默认创建的是串行队列创...

2019-11-21 15:35:45 104

原创 Unable to install “xxxx”

Unable to install “xxxx”今天早上发现的问题,昨晚下班的时候还是OK的?网上得到的答案大多是2016年的钥匙串中的证书过期重复删掉即可;然而在2019年是没有用的.问题如下图:This application or a bundle it contains has the same bundle identifier as this application or a...

2019-11-19 22:00:55 10526

原创 iOS架构设计

讲述MVC 、 MVVM 、MVP 以及你在项目里面怎么写的你自己用过哪些设计模式一般开始做一个项目 你的架构是怎么思考的解释:架构(Architecture)软件开发中的设计方案类与类之间的关系、模块与模块之间的关系、客户端与服务端的关系经常听到的架构名词MVC、MVP、MVVM、VIPER、CDD三层架构、四层架构…MVC-Apple版本优点:View、Model...

2019-10-29 23:57:38 258

原创 iOS多线程(二)

说下OperationQueue 和 GCD 的区别,和各自的优势线程安全的处理手段有哪些OC你了解的锁有哪些,在你回答的基础上进行二次提问 自旋和互斥对比 使用以上锁需要注意什么 使用C/OC/C++,任意一种实现自旋和互斥iOS 中的线程同步方案OSSpingLockos_unfair_lockpthread_mutexdispatch_s...

2019-10-29 21:46:37 111

原创 面向对象

封装将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。封装的两大原则把尽可能多东西藏起来,对外部提供便捷的接口把所有额属性藏起来封装的好处便于使用者正确的使用系统,防止错误的修改属性有助于系统之间的松耦合,提高系统的独立性提高软件的可重用性降低了构建大型系统的风险继承解决了重用代码的问题多态同一个事物,由于条件不同...

2019-09-01 21:25:55 59

原创 数组笔记

Array是一种线性表数据结构,他用一组连续的内存空间,来存储一组具有相同类型的数据。每一种编程语言中都会有这种数据类型。其还是一种基本的数据结构数组的特点线性表(Linear list):线性表就是数据排成像一条线一样的结构。每个线上的数据都最多有前和后两个方向;链表、栈、队列也是现行结构。与它相反的概念是:非线性表、比如:二叉树、堆、图之所以叫非线性,是因为在非线性表中,数据之间并不...

2019-08-22 16:31:33 114

原创 iOS多线程笔记(一)

你理解的多线程?iOS的多线程方案有哪几种,你常用的是?你在项目中使用过GCD吗 ?GCD的队列类型?在主线程中执行下面一段代码:打印结果是:dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_async(queue, ^{ NSLog(@"=====1"); [se...

2019-08-22 12:28:40 95

原创 Cocopods Carthage 结合使用

利用 Carthage 将项目打包 Framework 并依赖 CocoaPods 第三方库的方法新建一个工程或者在现有工程下创建一个新的 target ,类型需要选择 Coaoa Touch Framework由于 Carthage 在 build 时,会自动将设置为 Shared 的 framework target 构建成 framework ,所以需要单击顶部 target ,在弹出选...

2019-08-21 11:40:37 526

原创 cocoapods 遇到的问题

问题描述:spec: The specification defined in `00` could not be loaded.在命令行中不知道为什么 spec文件的后缀换行了导致的问题;并非网上大多数人所说的一下原因spec.description = <<-DESC Computes the meaning of life. xxx:pickView / x...

2019-08-21 11:33:38 359

原创 Cocoapods

Cocoapods注册You need to register a session first/// 需要先注册账号pod trunk register 电子邮箱 '您的姓名' --description='macbook pro'##原理:cocopods 在GitHub上有一个远程索引库,里面存储了所有的第三方库的.spec文件(.spec文件中存储的是这些库的所有信息;包括源...

2019-08-21 11:27:10 95

原创 Carthage

给自己项目添加 Carthage 支持的方法可以帮助你方便的管理第三方依赖,它会把三方依赖编译成 framework ,以 framework 的形式将三方依赖加入到项目中进行使用和管理。首先:安装 Carthagea、在GitHub下载 Carthage.pkg 进行安装Homebrewb、brew update ;brew install carthage配置:如果你的 f...

2019-08-21 11:15:02 166

原创 复杂度分析笔记下

最好、最坏、平均、均摊时间复杂度最好情况复杂度分析:在最理想的情况下执行这段代码的时间复杂度最坏情况复杂度分析:在最糟糕的情况下执行这段代码的时间复杂度加权平均情况复杂度(也叫期望时间复杂度)在所有情况(需要乘以这种情况发生的概率)的复杂度之和在除以情况的个数均摊时间复杂度通过摊还分析得到的时候见复杂度在整个过程中大多情况出现低阶复杂度和偶现高阶复杂度的情况下,将高...

2019-08-20 16:39:14 82

原创 复杂度分析笔记上

数据结构和算法本身是解决快和省得问题如何衡量–时间、空间复杂度分析为什么进行复杂度分析呢测试结果非常依赖环境i3和i9执行同样的代码同样的两段代码在好的设备和一般设备上的运行结果截然相反测试结果受数据规模影响很大同样的排序算法,数据的有序度不一样,执行结果会大不相同极端情况下,数据已经是有序的,那么算法不需要做任何操作,执行会非常快数据规模太小测试结果无法真实反映算法性...

2019-08-20 15:27:03 99

空空如也

空空如也

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

TA关注的人

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