自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仰望星空的博客

用心聆听,深深呼吸,烟花雨,梨花月,寄一缕风的香魂,远离喧嚣!

  • 博客(54)
  • 资源 (3)
  • 收藏
  • 关注

原创 HTTP协议(一)

iOS-网络编程(-)HTTP协议在移动互联网时代,几乎所有应用都需要用到网络,只有通过网络跟外界进行交互数据,数据更新,应用才能保持新鲜活力。一个好的移动应用不仅要有良好的UI和良好的用体验也要具备实时更新数据的能力。网络编程便是一种实时更新应用数据的常用手段,也是开发优秀网络应用的前提和基础。网络编程基础客户端:移动应用服务器:为客户端提供服务,提供数据,提供资源的机器请求:客户端向服务器索取数据的一种行为响应:服务器对客户端的请求作出的反应,一般指返回数据给客户端HTTP协议协议指的

2021-04-16 20:57:56 606

原创 iOS 优化之NSTimer

定时器的应用说到定时器,在项目中使用最多的可能就是NSTimer了,其实除了NSTimer,在iOS开发中,我们还有许多其他的方式可用来创建定时器。通过CADisplayLink或者GCD也可以是想强大的定时器功能。缺点:NSTimer定时器,其实不是按时间间隔进行循环调用的,实际上在定时器注册到runloop中后runloop会设置一个一个的时间点进行调用,如果错过了,则定时器并不会延时条用,而是直接等待下一个时间点调用,所以台式不精准的。子线程要手动开启RunLoop,这样创建的NSTimer

2021-03-30 20:01:31 1086

原创 Vue原理 简言

Vue原理Vuetemplate 编译 render Function Vnode 虚拟DOMReactJSX render function Vnode 虚拟DOMVue 对比其他框架的原理vue相当于React,Angular更综合一点。Angular js则使用了‘脏值检测’。React则采用避免直接操作DOM的虚拟DOM树,而vue则采用的是Object.defineProperty特性Vue可以说是尤雨溪从Angular中提炼出来的,又参考了React的性能思路,而集打成的一

2021-02-26 21:15:29 347

原创 NSCache、NSDictionary、NSArray对比

NSCache、NSDictionary、NSArray1.NSArray 作为一个存储对象的有序集合,可能使用最多的集合类性能特征:在数组的开头和结尾插入删除通常是直接操作O(1),而随机的插入和删除通常是O(n)2.NSDictionary中的键是被拷贝的并且需要是恒定的,如果在一个键在被用于字典中放入一个值后被改变,那么这个值可能就会变得无法获取了。一个有趣的细节,在NSDictionary中键是被拷贝的,而在使用一个tool-free桥接的CFDictionary时却是被retain。Cor

2021-02-26 21:14:11 400

原创 iOS开发中自旋和互斥锁的理解以及所有锁的性能比较

iOS开发中自旋和互斥锁的理解以及所有锁的性能比较OSSpinLock,dispatch_semaphore和pthread_mutex性能最高的,苹果在新系统中已经优化了pthread_mutex的性能,所以它看上去和OSSpinLock差距没有那么大。可以看到YYKit组件中YYCache和YYImageCoder大量使用dispatch_semaphore pthread_mutex这两个锁OSSpinLock自旋锁(虽然已经证明不安全,优先级翻转),性能最高的锁。原理很简单,就是一直do wh

2021-02-26 21:11:06 399

原创 常见的排序算法

排序算法冒泡算法//冒泡排序 时间复杂度O(n2)//优化方案:设置flag 是否交换func bubbleSort(list: inout Array<Int>) { var isSwap = false//优化 for i in 0..<list.count { isSwap = false for k in 0..<(list.count - i - 1) { if list[k] > lis

2021-02-26 21:01:05 91

原创 Vue axios开发环境的跨域

Axios跨域定义:出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)当前URL接口URL是否跨域原因

2020-07-09 21:40:20 239

原创 Swift之使用自定义IconFont

IconFontIconFont 也叫字体图标,顾名思义,就是字体做的图标。受到近些年扁平化设计 的影响,越来越多的图标都开始使用 icon font。IconFont技术起源于Web领域的Web Font技术。随着时间的推移,网页设计越来越漂亮。但是电脑预装的字体远远无法满足设计者的要求,于是Web Font技术诞生了。一个英文字库并不大,通过网络下载字体,完成网页的显示。有了Web Font技术,大大提升了设计师的发挥空间。优点自由的变化大小,且不会模糊比图片小,加载快方便更改颜色大小,图

2020-06-18 23:01:42 1240

原创 Mac下环境变量虽然添加了但是:zsh: command not found xxx

Mac下环境变量虽然添加了但是:zsh: command not found xxx更新了MacOS Catalina之后打开终端会出现下面的提示据官方说,从 macOS Catalina 版开始,您的 Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell。您还可以在较低版本的 macOS 中将 zsh 设置为默认 Shell。运行chsh -s /bin/zsh之后,发现配置的的命令不能用了,这是因为切换了shell执行工具##解决方法也很简单单次解决办法只对当前终端窗口

2020-05-13 09:38:31 1254

原创 React通过Stompjs接入RabbitMq

React通过Stompjs接入RabbitMqwebSocket一般用于web端消息推送,以及聊天用的长连接。RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。##方式一:npm install stompjsimport Stomp from 'stomp'//如果编译提示不通过,请检查webpack配置问

2020-05-12 21:50:59 2447

原创 力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。

力扣(LeetCode)给定一个非负整数数组,你最初位于数组的第一个位置。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2...

2020-04-17 09:44:34 3075

原创 iOS 音视频 -- 编译FFmpeg

#文件依赖最新版的gas-preprocessorFFmpeg-iOS-build-scriptyasmgas-preprocessor下载最新的gas-preprocessorcd gas-preprocessor目录sudo cp -f /Users/username/Desktop/gas-preprocessor-master/gas-preprocessor.pl ...

2019-12-04 10:31:42 215

原创 Mac FFmpeg打印音视频信息

实战 打印音视频信息Mac 已经配置好FFmpeg相关信息,如果没有可以查看链接:https://blog.csdn.net/weixin_38735568/article/details/103282537API有哪些av_reginster_all() 必须的avformat_open_input() / avformat_close_input() 打开和关闭多媒体文件av...

2019-11-28 19:46:08 368

原创 FFmpeg初级开发

FFmpeg日志的使用以及目录操作日志级别AV_LOG_ERRORAV_LOG_WARNINGAV_LOG_INFOAV_LOG_DEBUG//导入文件include <libavutil/log.h>//日志级别av_log_set_level(AV_LOG_DEBUG)//打印日志av_log(NULL, AV_LOG_INFO, "...%s\n",...

2019-11-28 14:29:08 140

原创 FFmpeg Mac 编译下载与安装

下载git clone https://git.ffmpeg.org/ffmpeg.git帮助cd ffmpeg./configure --help | more安装必备的 yasmbrew install yasm// 如果安装失败,请使用sudo chown -R `whoami`:admin /usr/local/binsudo chown -R `whoami`:ad...

2019-11-27 20:24:29 1535

原创 iOS UIView添加阴影 四周和单个方向以及百分比

UIBezierPath通常情况下设置阴影只需要设置layer就行,但是如果只是单边阴影以及百分比,只设置layer效果不是多好,可以用贝塞尔曲线实现。效果图:class ViewController: UIViewController { @IBAction func typeChange(_ sender: UISegmentedControl) { let ...

2019-11-21 15:45:38 5590

原创 AirPods Pro好在哪

2019年10月29日0点,苹果正式上架了自己的全新真无线耳机AirPods Pro,相比之前的两代产品,新的AirPods Pro发生了巨大的变化。但从外观上发生了很大变化,之前的传言果然都是真的,吹风机式的设计,更贵的价格。看惯了非入耳式耳机,直呼这个太丑啦。分析下为啥比上一代贵啦这么多。AirPods我们从官网了解到AirPods,无限充电的配置也不过1500左右,而新款的AirPods...

2019-10-29 08:55:42 1816

原创 Swift 之标准数字格式显示

NumberFormatter序数形式: 1,234,56th货币形式: USD1,234,567 1,234,567.00 US dollars $1,234,567.00会计计数: $1,234,567科学计数:1.234567E6朗读形式:one million two hundred thirty-four thousand five hundred sixty-seven百分数形式:100%

2019-10-24 13:49:24 3274

原创 FPSLabel 的使用(检测tableView的流畅度)

iOS FPSLabel检测tableView的流畅度

2019-09-30 15:16:57 535

原创 iOS 可自定义AlertView

简单易用、可定制AlertView;Powerful, Easy to use alert view or popup view on controller and window,custom view and animation,for swift,support iphone, ipad

2019-09-26 15:37:44 1196

原创 iOS 13 SceneDelegate适配

Xcode 11新建工程在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象。原因:Xcode 11 默认是会创建通过 UIScene 管理多个 UIWindow 的应用,工程中除了 AppDelegate 外会多一个 SceneDelegateAppDelegate和SceneDelegate这是iPadOS带来的新的多窗口支持的结果,并...

2019-09-24 10:36:00 41588 1

原创 iOS性能优化之屏幕篇

屏幕成像在屏幕成像的过程中,CPU和GPU起着至关重要的过程。CPU(Central Processing Unit,中央处理器)负责对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics)等GPU(Graphics Processing Unit,图形处理器)负责渲染工作iOS双缓冲机制,有前帧缓存、后帧缓存什...

2019-09-17 16:07:51 481

原创 iOS 13适配汇总

随着iPhone 11的发布,iOS 13适配也提上了日程,接下来就开发中升级iOS13的手机可能出现的问题Xcode: 11.0iOS : 13.0UIViewController 模态弹出界面viewController.present(presentVC, animated: true, completion: nil)在调用模态弹出视图,会发现弹出的界面没有全屏。如图通过多次...

2019-09-15 14:53:26 9872

原创 iOS APP启动优化

APP启动优化App启动过程什么是image(镜像)pre-main阶段main()阶段pre-main阶段的过程和优化项1、 Load dylibsRebase/Bindobjc setupInitializersmain()阶段的优化项启动耗时的测量pre-main阶段:main()阶段测量App启动过程iOS应用的启动可以分为pre-main阶段和main()阶段,其中系统做的事情一次是...

2019-09-05 15:23:02 321

原创 iOS底层原理之KVO本质

面试中常会问道:iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?)如何手动触发KVO什么是KVO首先需要了解KVO基本使用,KVO的全称 Key-Value Observing,俗称“键值观察”,我们可以用于监听某个对象属性值的改变。如下代码://// ViewController.m// KVO原理探索// Created by just so so o...

2019-08-26 08:18:37 512

原创 iOS NSTimer 循环引用

高逼格解决NSTimer定时器中循环引用

2019-08-22 13:50:47 645

原创 面试算法之求最大公约数

题目:求两个数的最大公约数,要尽量优化算法的性能方法一:暴力枚举是绝对不可取的,效率不高如果我们传入的整数是10000和10001,那我们需要循环10000 / 2 - 1 = 4999for(int i = small / 2; i > 1; i--) { if(small % i == 0 && big % i == 0) { return i; }}...

2019-08-13 20:35:16 209

原创 面试算法之:如何判断链表是否有环

如何判断链表是否有环方法一:双重循序遍历代码如下方法二:把之前的遍历的结果实现存储起来方法三:如果环形跑道,速度不同时,两个人一定会相遇。代码方法一:双重循序遍历从头节点开始,一次遍历单链表的,每一个人节点。没遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和之前所有的节点一次比较,如果发现和之前的某一个节点相同 ,则说明该节点被遍历两次,说明环。缺点:时间复杂度O(n^2)太高,空...

2019-08-13 16:39:25 444 3

原创 iOS Cocoapods创建自己的Cocoapods公共库组件

iOS Cocoapods创建自己的Cocoapods公共库组件注册CocoaPods账户信息注册CocoaPods账户信息打开终端,创建一个开源pod库,需要注册CocoaPodspod trunk register 邮箱地址 '用户名' --verbose...

2019-07-24 11:27:12 472

原创 Swift Extention

YYExtentions链接地址:https://github.com/YaoChengZhen/YYExtentions.gitInstallationYYExtentions is available through CocoaPods. To installit, simply add the following line to your Podfile:source 'https...

2019-07-24 08:55:30 209

转载 修改cocoapods的trunk名称

小贴士:注册CocoaPods账户信息:使用如下命令pod trunk register 邮箱地址 '用户名' --verbose命令行执行获取密码grep -A2 'trunk.cocoapods.org' ~/.netrc会得到如下结果:machine trunk.cocoapods.org login yao@qq.com password 6c339fa4de26...

2019-07-23 21:58:36 479

原创 pod 组件验证常见错误

执行pod lib lint --allow-warnings 报错:- ERROR | [iOS] unknown: Encountered an unknown error (Could not find a `ios` simulator (valid values: com.apple.coresimulator.simruntime.ios-12-2, com.apple.coresi...

2019-07-22 17:14:33 2339

原创 Swift 优雅的协议扩展

Swift 优雅协议扩展仿view.snp.xxx的调用形式如何实现核心代码完整代码如下:仿view.snp.xxx的调用形式先看调用效果:“123456”.yy_Str.MD5ForLower32Bate()"123456".yy_Str.MD5ForLower32Bate()//类似:view.snp.xxx为什么要这么做呢?好处在哪呢?降低耦合度:传统的写法,直接在类别中添加...

2019-07-18 16:14:16 973 2

原创 Swift 代理传值

需求:上个页面的值,会传到当前页面。传值页面:class NextViewController: UIViewController { weak var delegate: NextVCDelegate? @IBOutlet weak var textField: UITextField! override func viewWillDisapp...

2019-07-17 11:31:01 1430

原创 Swift之高阶函数map、flatMap、filter、reduce

Swift之高阶函数map、flatMap、filter、reducemapflatMap与map不同之处filerreduce有关Swift.map高阶函数的应用 Swift相比于Objective-C又一个重要的优点,它对函数式编程提供了很好的支持,Swift提供了map、filter、reduce这三个高阶函数作为对容器的支持。map解释:可以对数组中的每一个元素做一次处理var ...

2019-07-15 17:43:20 521

原创 iOS Runtime几种常见的应用场景

iOS Runtime几种常见的应用场景OC的动态性场景一:防止button重复事件点击场景二:访问NSArray越界问题场景三:快速接手新工程ViewController中添加HookOC的动态性OC 的函数是属于动态调用,在编译的时候是不能决定真正去调用那个函数的,只有在运行的时候才能决定去调用哪一个函数 ,在编译阶段,OC可以调用任何的函数,即使这个函数没有实现,只要声明过也就不会报错。...

2019-07-15 11:11:01 1318

原创 iOS Hook之runtime

一、Hook概述Hook(钩子) 其实就是改变程序执行流程的一种技术的统称!Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。要实现钩子函数,有两个步骤:利用系统内部提供的接口,通过实现该接口,然后注入...

2019-07-15 10:00:02 879

原创 Swift5.0 Alamofire download的一般使用

Alamofire download指定自己想要的文件名:就要重写:DownloadRequest.DownloadFileDestination block具体代码如下: let destination: DownloadRequest.DownloadFileDestination = {[weak self] (url, response) in let ...

2019-07-05 10:02:47 6278 3

原创 iOS 调用系统分享

调用系统分享框架Social.framework利用系统分享内容如下自定义UIActivity框架Social.framework导入框架Social.framework,集成系统分享时候我们会用到UIActivityViewController这个类的。利用系统分享内容如下fileprivate func systemShareAlert() { let url = U...

2019-07-04 12:37:20 2267

原创 iOS 文件预览(PDF、Excel、World等)之QuickLook框架

iOS 文件预览QuickLookQuickLook一、简介QuickLook库可以让我们的App在iPhone/iPad中直接预览各个文件了。官方的开发文档中说明其支持的文件类型有:iWork documentsMicrosoft Office documents (Office ‘97 and newer)Rich Text Format (RTF) documentsPDF ...

2019-07-01 14:18:01 5657

runtime 编译objc4-750相关对应版本依赖库

runtime源码编译objc4-750相关对应版本依赖库,官网正版

2019-08-23

objc4-750-master.zip

runtime 编译通过源码-最新版objc4-750,不用再倒入任何库,直接运行就行。

2019-08-23

runtime 源码最新版

runtime 官方源码 带部分注释; 最新的官方源码objc4-750

2019-07-30

空空如也

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

TA关注的人

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