自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (2)
  • 收藏
  • 关注

原创 AutorealeasePool 实现原理

@autoreleasepool 编译后会变成void * atautoreleasepoolobj = objc_autoreleasePoolPush();// 中间代码objc_autoreleasePoolPop(atautoreleasepoolobj);这里要记录一下,objc_autoreleasePoolPush函数的返回值 传给了objc_autoreleaseP...

2019-03-04 09:58:20 1470

原创 点滴汇总

面向对象-六大原则 单一职责原则【SRP】 -- 就一个类而言,应该仅有一个引起他变化的原因 开闭原则[【OCP】-- 对于扩展是开放的 对于本类修改是关闭的 里氏替换原则【LSP】 子类可以实现父类的抽象方法,但是不能覆盖,且返回值要比父类严谨 子类可以添加的独立方法,也可以重载,但是重载的时候要比父类的方法参数宽松 依赖倒置原则【DIP】 高层次模块不应该依赖低层次...

2019-03-01 14:35:52 234 1

原创 简单工厂模式、工厂方法模式、抽象工程模式 【OC】

在介绍工厂模式之前,先说一下OC并没有提供抽象类(abstract class),所以如果我们需要的话需要自己实现一下,其实就是把init重写,如果直接调用本类的init 返回nil。- (instancetype)init{ if ([self isMemberOfClass:YiFu.class]) { /** 这里一定要用 isMemberOfClass, 区分开isKin...

2019-02-28 17:25:48 358

原创 iOS逆向 -- 越狱手机LLDB调试 (实战)

LLDB调试原理通常正向开发,通过Xcode 调试手机是这样的:1.Xcode 会给手机安装一个 debugserver2.debugserver 依附于某个程序进程3.Mac上Xcode 链接debugserver,并发送指令 , debugserver 对程序进行调试。那么如何在越狱手机上对App进行调试 (不用Xcode)1. 首先USB连接手机 ,cd 到 /Dev...

2019-02-20 14:54:01 1449

原创 iOS逆向 -- Theos-tweak安装实战

一、Theos 安装Theos-wiki 上有比较详细的介绍,下面我简单记录一下自己的安装过程:1.在 ~/.bash_profile下添加环境变量export THEOS=/opt/theosexport PATH=$THEOS/bin/:$PATH如果没有/opt/theos ,自行创建。2. 环境变量添加成功后 执行 ,(如果环境变量不好使 source 一下)...

2019-02-18 16:03:19 1156

原创 iOS逆向 -- cycript 依附进程

首先要在越狱手机上安装 Cycript 插件用电脑链接越狱手机后可以直接使用 ps -A 查看可以依附的进程以爱奇艺为例 1538 ?? 0:18.91 /var/mobile/Containers/Bundle/Application/EC6A9BCD-1EA6-4BB9-8044-769FB2927020/iQiYiPhoneVideo.app/iQiYiPh...

2019-02-17 10:05:18 561 1

原创 iOS逆向 -- 砸壳

直接上内容:1.Clutch<1> 首先附上github链接,下载最新的release版本,我这里下载的是2.0.4<2> 然后重命名 Clutch,usb链接手机 并拷贝到越狱手机上的/usr/bin/目录下指令:scp -P 12345 Clutch-2.0.4 [email protected]:/usr/bin<3> cd到该目录...

2019-02-15 13:58:55 495 2

原创 动态规划法 - 解决TSP旅行商问题(iOS、python)

项目里突然出现了一个类似TSP旅行商的问题,稍微有点儿变动的可能是需要指定终点,而不是回到起点。因为项目里设计规划的点的比较少(<20)又要求比较准确,所以采用了动态规划法。动态规划算法的定义就不多做介绍了, 下面直接来到解决思路。假设有N个城市,dp[N][N]这个二维数组保存了 各个城市之间的距离那么问题就可以简化为 从0(p)点出发到还未走过的城市集合 S(N-1)的最...

2018-12-08 15:55:34 3808 2

原创 iOS逆向 -- 应用签名原理以及重签名

前两篇介绍了 RSA、HASH、和对称加密,今天结合iPhone感受一下苹果的双重认证签名1.针对普通用户因为市场上软件参差不齐,苹果为了保证用户手机安全,所以要求必须是通过App Store上下载的App才能进行安装(也就是经过了苹果审核的ipa包才能在手机上安装)那么如何做到的呢1.第一层认证 (公钥A 私钥A - 因为后面还有一层 所以给公钥私钥起了个名字)iPhone手...

2018-12-06 16:10:04 251

原创 iOS逆向 -- HASH和对称加密

上一篇讲了 RSA加密的由来(一大堆数学公式看的很懵逼,其实大概了解了rsa的非对称加密怎么来的就可以)今天这篇讲HASH和对称加密HASHhash的概念我就不介绍了 主要介绍一下它的特点和应用通常hash有 MD5 sha1 sha256 sha523 还有更高级的hmachash的特点算法是公开的 对相同数据运算结果相同 对不同的数据运算,得到的结果默认是128位,...

2018-12-06 14:53:09 184

原创 iOS逆向 -- RSA加密探究

密码学说起:历史:两千年前 凯撒大帝发明base64的雏形容易破解 【信息论】间谍很危险一直到1976年 迪菲、赫尔曼提出了一个构想 不通过密钥交换 1977 rsa诞生RSA加密探究对称加密的弊端 还有RSA的历史不在这里赘述,有兴趣的同学课自行查阅资料在开始之前需要一定的数学知识,在这里跟大家一起复习一下:取模运算:3%17= 3 、 3^2%...

2018-12-03 17:30:08 224

原创 Auto Layout性能?那试一下简便的Frame写法。

之前一直采用的Auto Layout,直到有一天写了一个复杂界面,然后iPhone 6p没加载出来。。。是的, 没加载出来。。。所以我就查阅了一下相关文献,有一篇《从 Auto Layout 的布局算法谈性能》比较清晰的解释了Auto Layout的弊端。但是呢传统的Frame为了适配复杂机型,写起来也非常费劲。所以我尝试写一个简单易用的Frame layout。先附上我的一个Demo...

2018-10-19 11:31:02 186

原创 ios - 造成内存泄漏的原因

block的循环引用[self.service requestData:^(id data){ self.title = data[@"title"];}];这种情况就是典型的循环引用导致内存泄漏,self强引用service, service强引用了block,而block回调时又调用了self,导致block强引用了self,造成循环,无法释放。解决方案__wea...

2018-10-09 14:07:32 905

原创 乱七八糟

1.Category 会覆盖掉原来类里的方法吗?答案是会的,将category生成对应的cpp文件会看到它的结构,struct _category_t {const char *name;struct _class_t *cls;const struct _method_list_t *instance_methods;const struct _method_list_t...

2018-10-08 10:58:16 140

原创 iOS - 多线程

多线程:一个进程里面开启多条线程,每条线程可以单独的执行不同的任务。iOS实现多线程的方式:1、pthread(C写的、基本不用) 2、NSThread 3、gcd 4、NSOperation下面分别介绍下后三个常用的多线程方式NSThread:使用方式// 方式1NSThread *thread = [[NSThread alloc]initWithTarget:se...

2018-09-28 12:00:10 134

原创 iOS-观察者模式-KVO、NSNotification的实现原理.KVC原理

观察者模式的定义:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。KVO基于runtime实现,当你观察一个对象的时候,一个新类被动态创建继承于被观察对象的类,并重写所被观察属性的setter方法,并在赋值语句前后分别加上valueWillChang...

2018-09-20 19:50:21 781

原创 iOS -类探究、 isa

OC比C多了面向对象,那么是如何做到的呢,今天大致了解一下类的构成。首先要明确的一点是:oc当中类的定义也是对象,类和类的实例化对象 都是对象,所有对象都有isa指针。typedef struct objc_class *Class;oc的class 实质是objc_class的结构体,再来看isa:一个Class类型的指针,每个实例对象的isa指针指向自己的类(Cl...

2018-09-20 11:48:26 203

原创 iOS -property关键字 copy-mutableCopy区别

atomic :原子操作,默认属性,setter方法会变成下面的样子{lock} if (_a != a) { [_a release]; _a = [a retain]; }{unlock}但是该关键字不能保证该变量的线程安全,只是对getter 和 setter方法进行了加锁操作,避免多个线程同时操作产生错误数据。例如...

2018-09-19 14:57:27 408

原创 iOS -- 响应链

一直在写代码,忙忙碌碌却碌碌无为,所以最近想稍微沉淀一下,补充一下自己的理论基础,先从最常用的响应链开始吧。。。一、如何理解iOS的响应链?第一要明确的是能够接受和处理事件的响应者都是UIResponder的实例,包括UIView,UIViewController,UIApplication等。UILayer不包括在其中。第一响应者由UIKit指定,当然根绝事件类型有所变化    ...

2018-09-17 21:34:46 636

原创 iOS 开发ipa包瘦身 -- 可执行文件大小

项目写完以后打出来的包太大 分析一下首先打开Products下有个.app 文件 右键show in finder后 再次右键 显示包内容项目打包后的文件就会一一罗列在这里。这里重点看一下这里有个黑色的可执行文件,在我项目里一开始竟然达到了50M+那么这个文件具体由什么组成的呢?我们在项目的Build Settings里面搜索 map把Write Link ...

2018-09-11 15:22:43 2982

原创 ios 实现白天夜景切换的方案

项目中要做白天夜景切换的功能,写了个扩展方便用,记录一下。不太完善,主要是提供一种思路。。。,欢迎大牛指点一下。先附一个链接 https://github.com/evolFe/DayNightDemo效果图:利用category封装 使用是这样的实现思路:1,色值变化,主要是view的backgroundcolor,label.texColor, button.t...

2018-09-10 11:56:18 935

原创 iOS 如何计算图片加载内存中所占的大小

首先图片自动缩放到2的n次方大小,例如200 * 300像素 会变成256 * 512大小。图片内存大小的计算公式 宽度 * 高度 * bytesPerPixel/8。bytesPerPixel : 每个像素所占的字节数。RGB颜色空间下 每个颜色分量由8位组成但是通常情况下颜色还有alpha通道也是8位 也就是传说中的RGBA所以总共是32位所以一般图片的计算公式是 w*...

2018-08-31 18:40:30 6887

原创 SDWebImage源码阅读记录

以前从来没有静下心来好好看看一些大神写的常用第三方库,现在看看,记录一下。。。从使用看起会经过UIImageView+WebCache类里的UIImageView+WebCache然后统一调用到UIView+WebCache里的下面逐行解释该方法实现 下面的三个方法 介绍了如何将Operation 绑定到自己 并执行了什么操作。。。接...

2018-08-27 17:27:21 310

原创 YYModel 源码阅读记录

最近感觉知识匮乏,成长进步进度缓慢,早就听说YYKit屌到不行,遂来试着读一下,第一个先看YYModel首先看一下 YYClassInfo这个类,里面实现了对class基本信息的封装 (先大概了解,后面细说)YYClassIvarInfo,YYClassMethodInfo,YYClassPropertyInfo,YYClassInfo接下来说一下YYModel的使用(通过一个字典...

2018-08-21 11:56:30 519

原创 Linux Git更新

wget -O git.zip https://github.com/git/git/archive/master.zipunzip git.zipcd git-masterautoconf./configure --prefix=/usr/localmake && make install删除旧版rm /usr/bin/git新装的版本链接过去ln -s /usr/loca...

2018-04-27 10:52:26 1640

原创 Pip install bs4 失败

The repository located at pypi.douban.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may sile...

2018-04-16 10:13:11 2470 1

原创 sqlalchemy 子查询

第一种res=session.query( session.query(UserModel).filter(UserModel.id > 8).subquery()).all()第二种res=session.query(UserModel.name).filter(UserModel.id.in_( session.query(UserModel.id

2018-02-02 13:31:13 5475

原创 Mac 电脑 配置Mysql 默认编码utf8

#mysql -u root -p 会报错 command not found解决方案: #sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin#mysql -u root -ppassword:mysql>status; 可以看见 Server characterset: latin1,  Db charac

2017-11-17 09:33:18 234

转载 objc_setAssociatedObjec

//唯一静态变量keystatic const char associatedkey;static const char associatedButtonkey;- (IBAction)sendAlert:(UIButton*)sender{        NSString *message =@"我知道你是按钮了";    

2015-07-09 17:49:38 588

仿AppStore 动画效果

仿新版appstore 首页推荐列表 动态弹框列表。。。 点击某个cell会弹出新界面 下拉会回到之前的界面

2018-05-29

ELKit几个常用控件的扩展

几个常用控件的扩展 使用链式编程 跟Masonry更搭 是纯手工代码选手的上帝之手

2016-08-03

空空如也

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

TA关注的人

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