自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Runtime底层原理--动态方法解析、消息转发源码分析

了解了Runtime函数含义,我们就可以直接使用Runtime的API了,那接下来继续探究Runtime的源码,经过源码分析来更加深刻的了解Runtime原理。开发应用都知道Runtime很重要,但是有很多小伙伴根本不了解,或者只是知道可以替换方法啊、可以交换两个方法的调用,项目中也用不到,从进入iOS开始,写了无数个[[objc alloc] init],这个到底在干嘛?初始化和ini...

2019-05-08 11:09:26 368

原创 iOS应用签名原理--数字签名?代码签名?双层代码签名?

数字签名数字签名(又称公钥数字签名、电子签章等)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名技术是将摘要信息用发送者的私钥加密,与原文一...

2019-03-29 17:32:51 1130

原创 Runloop底层原理--源码分析

什么是Runloop?Runloop不仅仅是一个运行循环(do-while循环),也是提供了一个入口函数的对象,消息机制处理模式。运行循环从两种不同类型的源接收事件。输入源提供异步事件,通常是来自另一个线程或来自不同应用程序的消息。定时器源提供同步事件,发生在预定时间或重复间隔。两种类型的源都使用特定于应用程序的处理程序例程来处理事件。除了处理输入源之外,Runloop还会生成有关Runl...

2019-07-10 14:36:49 803

原创 Runtime底层原理总结--反汇编分析消息转发

消息转发:发送一个消息,也就是sel查找imp,当没有找到imp,接下来进入动态方法解析,如果开发者并没有处理,会进入消息转发。消息转发前几篇文章介绍了Runtime底层原理和动态方法解析总结,我们知道如果前面的动态方法解析也没有解决问题的话,那么就会进入消息转发_objc_msgForward_impcache方法,会有快速消息转发和慢速消息转发。_objc_msgForward_...

2019-07-05 16:06:45 483

原创 Runtime底层原理--动态方法解析总结

方法的底层会编译成消息,消息进行递归,先从实例方法开始查找,到父类最后到NSObject。如果在汇编部分快速查找没有找到IMP,就会进入C/C++中的动态方法解析进入lookUpImpOrForward方法进行递归。动态方法解析动态方法解析分为实例方法和类方法两种。实例方法查找imp流程和动态方法解析比如执行一个Student实例方法eat,会先去这个类中查找是否有该方法(sel),...

2019-06-27 20:39:33 732

原创 Xcode无线调试

Xcode无线调试是WWDC2017的一个新功能,首先要满足iOS11以上,Xcode9以上;首先,把iOS11以上的iOS设备连接到Xcode9,shift + Commond + 2快速打开设备列表,或者在菜单中打开window,找到Device and simulators。打开后,勾选Connect via network,成功后拔掉数据线。在左侧列表中,右击刚刚连接的iOS...

2019-06-24 14:34:25 2172

原创 Runtime底层原理--Runtime简介、函数注释

Runtime官方文档介绍直通车扩展:编译时看到运行时就会想到编译时,编译时主要是将源代码翻译成可识别的机器语言,如果编译时类型检查等翻译过程中发现语法分析之类有错误会给出相应的提示。比如OC,swift,Java等高级语言的可读性比较强,但是一般不会被机器直接识别,所以需要将他们编译成机器语言(汇编等),转为二进制Runtime简介在 Objective-C 中,消息是直到运行的时...

2019-05-08 11:06:10 383

原创 Mac电脑配置Alfred、Go2shell、iTerm2+Oh My Zsh

哎,一年换了个21-inch iMac,两个27-inch iMac,加上重做系统就更不说了,每次都要下载各种软件,各种配置。。。故记录这篇文章以免自己以后老了记不住,希望可以帮到更多人吧!效率神器Alfred、Go2shell首先,拿到新电脑,需要下载很多软件,第一时间把Alfred和Go2shell安装好,这里有各种破解软件免费下载平台,里面安装教程很详细,默认alt + 空格打开Alf...

2019-03-29 17:38:51 724

原创 macOS 10.14 mojave安装低版本iTunes 12.6.x

下载iTunes 12.6版本:https://support.apple.com/zh-cn/HT208079安装低版本iTunes利用脚本编辑器运行脚本安装低版本iTunes:关闭SIP系统完整性保护打开Mac终端输入命令:csrutil status$ csrutil status默认情况下是开启的System Integrity Protection statu...

2019-03-29 17:38:06 2774

原创 对称加密算法原理--OpenSSL演示、iOS代码运用及CCCrypt安全隐患

之前介绍了非对称加密算法,这篇文章介绍一下在非对称加密算法出现之前的对称加密算法,常见的对称加密算法、终端演示OpenSSL和iOS代码运用以及CCCrypt的安全隐患等。对称加密算法:明文通过密钥加密得到密文,密文再通过这个密钥解密得到明文。所以在业务逻辑上相对没有非对称加密RSA的安全性高。常见的对称加密算法DES数据加密标准,但由于强度不高,暴力破解难度不是很高,所以用的很少...

2019-03-29 17:35:03 678

原创 本地进行证书签名

之前说过生成公私钥.pem文件,实际上,我们在工作中一般不会用到.pem文件,我们完全可以在钥匙串中证书助理直接从证书颁发机构中申请证书,当然本地也可以。终端生成证书首先生成.csr请求证书文件,之后用这个.csr文件去证书颁发机构请求证书。// 通过private.pem,new一个rsacert.csr文件$ openssl req -new -key private.pem...

2019-03-29 17:31:20 449

原创 了解Base64编码解码

我们经常说Base64,那Base64到底是什么呢?Base64是一种基于64个可打印字符来表示二进制数据的表示方法,常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,会将不便于查看的二进制数据用Base64进行表示。所以Bsea64经常用于密码学中,因为密码学通常用二进制进行加密,加密的结果用Base64编码来表示并传输。我们想了解Base64,其实看下面的Base64索...

2019-03-29 17:26:21 388

原创 非对称加密算法--RSA加密原理详解

密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。密码学发展史在说RSA加密算法之前, 先说下密码学的发展史。其实密码学的诞生,就是为了运用在战场,在公元前,战争之中出现了秘密书信。在中国历史上最早的加密算法的记载出自于周朝兵书《六韬.龙韬》中的《阴符》和《阴书》。在遥远的西方,在希罗多德(Herodotus)的《历史》中记载了公元前...

2018-12-24 00:33:58 48421 20

原创 修改系统UIAlertAction的按钮颜色

通过runtime获取对应的可以修改的key来修改系统UIAlertAction的按钮颜色

2018-06-21 11:39:29 6264

原创 UItableView的一些特殊点击效果

UItableView是iOS常用控件之一,我们也经常会用它来展示数据;那么就不可避免会对UItableView有点击,左右滑动等操作,接着就会有操作的效果。哇啦哇啦一大堆就不展示了,直接上代码说下选中的效果吧。选中效果就要用到UItableViewCell的selectionStyle属性UITableView的cell默认选中效果为UITableViewCellSe

2017-09-06 16:37:46 2056

原创 解决"IOS ATS禁止HTTP明文传输"

最近新建项目中,访问网络被阻止App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.意思就是ATS阻止了HTT

2017-03-02 16:56:16 958

原创 最新cocoaPods安装、升级、卸载及删除库命令(持续更新)

从开始开发iOS就一直在用cocoaPods,其中也遇到了不少问题,下面的是关于cocoaPods的一些命令,在这里Mark下。一、命令行安装$ sudo gem update --system // 先更新gem,已切换到最新地址$ gem sources --remove https://rubygems.org/$ gem sources -a https://gems.rub...

2016-08-10 20:59:04 6046

空空如也

空空如也

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

TA关注的人

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