自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (10)
  • 收藏
  • 关注

原创 iOS(安卓/客户端)与JS交互方案设计

iOS 原生与JS交互设计方案

2022-06-07 18:28:03 3106

原创 iOS 二进制重排

iOS 启动优化目前已在多个项目中实践过了启动优化相关技术,今天记录一下,分享给更多的人。概述启动优化实践中主要分为两个阶段:第一阶段,main 函数之前的优化:① 二进制重拍。② 控制 +load 函数的使用次数。③ 控制动态库数量,官方建议原则上不超过6个(可以合并动态)。④ 减少类的数量(删除冗余的类)。第二阶段,main函数之后的优化主要是针对业务层面的优化① 在启动函数 application:didFinishLaunchingWithOptions: 中,将不影响首页加

2022-06-01 12:51:04 1034

原创 重签名防护

重签名防护

2021-12-29 11:58:56 521

原创 iOS越狱环境 debugserver 防护

LLDB 越狱调试$ debugserver *:端口号 -a 进程(某个app进程)LLDB 启动开启LLDB$ lldb连接 debugserverprocess connect connect://手机ip地址连接成功,程序被断住,输入 c 继续导出 debugserver 描述文件$ ldid -e debugserver(可执行文件名) > 文件名.entitlement描述文件添加权限字段get-task-allow -> YEStask_for_pid_a

2021-12-28 20:57:25 1359

转载 Git常用命令及方法大全

本文转发自Git常用命令及方法大全Git常用命令及方法大全下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库本地分支关联远程git branch --set-upstream-to=origin/分支名分支名代码库修改密码后push不上去怎么办? // 重新输入密码 git config -...

2020-10-30 16:12:03 1619

原创 iOS 手势冲突

手势冲突主要的三种解决思路:设置手势优先级 requireGestureRecognizerToFail:实现协议方法 UIGestureRecognizerDelegate重写父类中的个别方法 @interface UIGestureRecognizer (UIGestureRecognizerProtected)1、自定义手势优先级场景一:自定义多手势冲突。例如我们设置的单次点...

2020-06-10 09:07:37 7625

原创 iOS JS与OC交互

iOS JS与OC交互1、UIWebView 与 JS 交互UIWebView 在 iOS12 中已经被废弃,同时WKWebView在iOS8中已经出现。所以无特殊情况的话,我们一般应该也是用不到前者了!UIWebView 初始化: self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; self.webView.delegate = self; [self.view addSubview:self.

2020-05-27 10:55:54 2294

转载 手势代理:UIGestureRecognizerDelegate

设置手势优先级的一个方法:// OneGesture 优先级低于 TwoGesture优先级// TwoGesture 识别失败时,才开始识别 OneGesture[OneGesture requireGestureRecognizerToFail:TwoGesture;@protocol UIGestureRecognizerDelegate <NSObject>@opt...

2020-01-09 20:16:12 2729

转载 转发:响应链与事件传递

本文转发自: 《iOS开发:浅谈响应链与事件传递》## iOS开发:浅谈响应链与事件传递1、基本概念响应者:在iOS中,响应者为能响应事件的UIResponder子类对象,如UIButton、UIView等。响应链:响应链是由链接在一起的响应者(UIResponse子类)组成的。默认情况下,响应链是由第一响应者,到application对象以及中间所有响应者一起组成的。...

2020-01-09 15:35:45 123

原创 iOS block解决循环引用的两个宏

非原创代码,具体出处已无处查找//解决block循环引用#ifndef weakify#if __has_feature(objc_arc)#define weakify( x ) \_Pragma("clang diagnostic push") \_Pragma("clang diagnostic ignored \"-Wshadow\"") \autoreleasepo...

2019-10-30 19:18:08 239

原创 Swift debug打印

/// 调试方法打印输出 func debugPrint<T>(_ message: T, filePath: String = #file, function:String = #function, rowCount: Int = #line) { #if DEBUG let fileName = (filePath as NSStri...

2019-10-29 21:30:22 596

原创 iOS 线程保活

iOS 线程保活的三种方案。目前从网上找到三种线程保活的方案,前两种通过 RunLoop实现,第三种通过条件锁实现。首先我们自己创建 KYThread 继承 NSThread 并重写 dealloc 方法,用于判断线程是否被销毁。@interface KYThread : NSThread@end@implementation KYThread- (void) dealloc { ...

2019-09-25 20:45:30 2904

原创 iOS 应用安装包瘦身

iOS 安装包瘦身1、App Thinning苹果针对安装包已经做了三个层面的瘦身工作。1.1 App Slicing我们打包时,常选择arm64、armv7s 等架构支持。但是上传苹果应用商店后,他为我们的应用安装包针对不同的机型架构,生成了特定的安装包。也就是不同arm64架构的机型不会下载armv7s架构的安装包。1.2 On Demand Resource资源按需下载。XCod...

2019-09-04 20:03:22 410

原创 iOS 项目启动优化

本文学习参考自iOS启动时间优化文内部分内容和图片来自该博客1、启动耗时测量在 Xcode 中 菜单栏 Product —> Scheme —> Edit Scheme -> Run -> Auguments 设置环境变量DYLD_PRINT_STATISTICS 为1 :启动后打印结果:Total pre-main time: 176.51 milliseco...

2019-08-23 18:52:00 571

原创 iOS 动态库注入

iOS动态库注入,可注入framework、dylib 这两种动态库(开发者创建的framework本质上还是一个静态库)。注入本质上将动态库注入到可执行的 Mach-O 文件中。注入静态库前提还是要理解重签名,以及使用脚本进行重签名的操作。然后执行注入流程。iOS 代码重签名1、framework 注入...

2019-08-02 14:09:15 1027

原创 iOS 代码重签名

代码重签名首先还是要了解iOS应用的签名机制。原理就是使用iOS免费的开发证书欺骗手机通过签名验证(告诉手机是我们自己的开发调试应用)。被重签名的应用是越狱 ipa 包或砸壳后的安装包。1、手动重签名1.1 查看xxx.app签名信息解压安装包,Payload 文件夹下找到 xxx.app 文件,查看签名信息。终端执行命令:$ codesign -vv -d #.app路径#砸...

2019-07-31 15:25:28 597

原创 class-dump 逆向头文件

class-dump 安装class-dump 命令导出 .h 文件class-dump -H #安装包文件路径# -o #头文件导出地址#mach-o 文件拆分lipo #mach-o文件# -thin armv7 -output #导出文件命名#$ lipo 002–可执行文件 -thin armv7 -output macho_armv7$ lipo 002–可执行文件 -thi...

2019-07-30 18:26:11 559

原创 FFmpeg 视频编码依赖包(x264)编译(iOS)

在对音频进行编码时,需要编译x264静态库。编译脚本文件在这里1、准备好脚本和x264源码2、执行编译文件 build_x264_iOS.sh命令行执行编译文件,提示我 Out of tree builds are impossible with config.h/x264_config.h in source dir.根据提示百度到的方法是:在x264文件中执行 configure...

2019-07-17 14:25:19 701

原创 FFmpeg 编译iOS真机包,并配置iOS开发环境

1、FFmpeg 编译在编译FFmpeg前,我们需要做点准备工作:下载FFmpeg音视频框架下载 gas-preprocessor.pl 文件,并配置在本地电脑中编译脚本文件 ffmpeg-build.sh,修改自己所需配置1.1 下载FFmpeg音视频框架下载该视频框架,可以在 GitHub 搜索下载,或者执行脚本文件下载。脚本文件下载地址:脚本下载地址执行脚本下载:下载...

2019-07-05 16:02:07 438

转载 Mac下 node安装和环境配置详解(最新)

转发https://blog.csdn.net/m0_37896739/article/details/83545890版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37896739/article/details/835458901、进入node官网下载页http://nodejs.cn/download/ 如下图:选择m...

2019-06-17 15:31:21 11711 1

原创 iOS打印启动时间

打印启动时间对于iOS应用查看启动时间,添加环境变量 DYLD_PRINT_STATISTICS值等于1:Product ——> Scheme ——> Edit Scheme…

2019-04-25 14:54:20 1375

原创 Runtime 知识点整理

runtime基础知识runtime 运行时是OC的底层代码实现。我们写的OC代码底层都是基于它实现的。类、方法和成员变量在我们编译的时候是不知道的,代码运行的时候才去检查是否实现。runtime可以做的事情苹果并不建议开发者直接使用runtime代码。但runtime代码确实可以帮助开发者实现很多OC代码难以直接实现的功能。其次来说,其执行效率也会提高。1、消息发送...

2019-01-25 19:03:14 317

原创 iOS代码结构设计

文中代码前缀 DH 为公司代码前缀近两天老大给我发了两篇关于安卓架构设计的文章,供我参考学习。虽然还没有接触过安卓的开发,但基本的思想捋了一下还是可以理解的。顺便总结一下,在iOS开发中使用。 资历尚欠不敢妄言架构,本文仅对它人文章梳理后于己所用。附安卓架构文章: Android项目重构之路:架构篇 Android项目重构之路:界面篇 Android项目重构之路:实现篇1、架构...

2018-06-20 17:25:18 1123

原创 iOS 非对称加密(RSA)

RSA简介摘自百度百科-RSA: RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 在公开密钥密码体制中,加密...

2018-05-31 16:56:27 2578

原创 iOS对称加密(DES 和 AES)

1、对称加密: 需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。 因此 [1] 加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密...

2018-05-30 17:54:45 2097 1

原创 iOS散列(HASH)算法

总结一篇常用的加密算法文章。1、常用加密算法1.1 哈希(散列)函数- MD5- SHA1- SHA256/512特点- 算法公开的- 对相同的数据加密,得到的结果是一样的- 对不同的数据进行加密,得到的结果都是定长 MD5: 散列字符串32个字符 SHA1: 散列字符串40个字符 SHA256: 散列字符串64个字符 ...

2018-05-29 17:53:07 3842

原创 iOS KVC

KVCKVC 和 KVO经常放在嘴边,开发中也会经常用到,或者被封装在第三方的库中。比如常用的MJExtension、模型字典互转工具等。今天简单写一下 KVC(key-value-coding)。 引用一下概念: Key-Value-Coding, 即键值编码. 它是一种不通过存取方法, 而是通过属性名称字符串间接访问属性的机制.是指在 iOS 开发中,允许开发者通过 字符串键和键...

2018-05-02 08:59:37 519

原创 iOS KVO

KVO今天写一下KVO的实现原理。一、应用1、API(1)给对象添加KVO监听- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context

2018-04-27 12:01:32 974

原创 NSOperation

NSOperation上一篇文章记录了GCD的使用,各种用法都有提到了,现在再写一篇笔记记录一下NSOperation的使用! 首先附上别人制作的一副图片: 网上的资料很多,细节的东西百度即可得,此文重点以简单的代码作为笔记。1、子类 BlockOperation(1)单独使用BlockOperaton代码:// MARK: - BlockOperation...

2018-04-13 19:17:16 160

原创 GCD笔记

GCD开发中多线程技术使用频率相当之高,近日得空系统梳理一下GCD的使用,写此笔记一篇。便于以后查阅! 此文不添加效果图,如有需求根据笔记自写demo1、获取主队列let mainQueue = DispatchQueue.mainmainQueue.async { print("主线程----> %@ ", Thread.current)}2、创建默认配置队列let globalQu

2018-04-13 11:34:23 253

原创 CoreData创建使用

本文初次使用MarkDown语法撰写 未完待续阅读该文章前,可以先行阅读以下几篇博客,对基础知识进行了解 认识CoreData-初识CoreData 认识CoreData-基础使用 认识CoreData-使用进阶 认识CoreData-高级用法 认识CoreData-多线程 认识CoreData-MagicalRecord CoreData使用...

2018-04-02 09:52:11 331 2

转载 iOS之RSA加密解密与后台之间的双向加密详解

注:本文全部转载自:https://www.jianshu.com/p/43f7fc8d8e14iOS之RSA加密解密与后台之间的双向加密详解序言因为项目中需要用到RSA加密,刚开始也是有点乱,这两天也整理的差不多了,希望能帮到大家。这次先上代码,我想大部分人肯定是着急解决问题,所以不要废话太多。iOS端后台是PHP,给我了一段公钥和他用私钥加密后的base64编码,让我先解一下,看看能否解出(请...

2018-03-02 16:12:50 5075

转载 3DES加密(iOS,Android,Java)

本文全部转载自:http://www.cnblogs.com/hjtdlx/p/3926141.htmlAndroid、iPhone和Java三个平台一致的加密工具先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java、Android和iPhone三个平台加解密不一致的问题。 因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户...

2018-02-28 14:35:48 296

原创 Transform仿射变换和原理

一、 Transform 二维变换UIView有一个transform属性,CGAffineTransform 可以操控二维平面内控件的平移、旋转和缩放。这三种类型的图形变换可以使用 CGAffineTransformMake(&lt;#CGFloat a#&gt;, &lt;#CGFloat b#&gt;, &lt;#CGFloat c#&gt;, &lt;#CGFloat d#&gt;, &l...

2018-02-27 12:07:06 1050

原创 iOS framework静态库制作

iOS framework静态库制作1、创建一个静态库工程            2、写一个测试类    (1)写一个测试类文件 Person,并将方法接口暴露在 .h 文件中:        (2)将Person.h 在FrameworkDemo.h 文件中暴露出来:    2、配置项设置    (1)修改 Build Settings 中的配置项            (2)增加armv7s ...

2018-02-13 08:33:54 245

原创 iOS Workspace 项目管理

iOS Workspace 多项目管理图片步骤较多1、创建Workspace工作空间        将创建的工作空间命名为“xxxx”, 然后将xxxx.xcworkspace保存到项目根目录文件夹(此处新建项目更目录为WorkspaceDemo)        2、创建多个工程project    (1)创建一个工程项目 TestApp_1                将工程TestApp_1...

2018-02-12 08:31:12 4580 2

原创 iOS搜索框移除导致的问题

在使用系统原生搜索框UISearchController时遇到的一个问题:问题描述:使用了UISearchController的控制器pop退出界面时,控制台总是打印一句警告:Attempting to load the view of a view controller while it is deallocating is not allowed and may res

2018-01-29 17:33:25 252

原创 集成地图的封装隔离

目的:    将第三方地图隔离,与项目代码解耦和,实现项目内各地图(百度、高德等)的快捷切换。思路:    (1)集成百度地图。    (2)实现百度地图集成设计。    (3)实现百度地图工厂设计。    (4)实现工厂管理。    (5)配置文件实现一键切换1、集成百度地图    查看文档配置SDK

2018-01-29 17:24:10 460 1

原创 RunLoop

RunLoop —运行循环相关链接文章:    http://blog.csdn.net/column/details/13762.htmlRunLoop基本作用:线程保活:保证程序的持续运行!死循环 负责监听事件:网络、时钟、触摸 节省CPU资源,提高程序性能:如果没有事件发生,它会进入休眠状态 RunLoop基本特点:线程与RunLoop一一对应:每条线程都对应一...

2018-01-29 17:20:48 174

原创 浅谈编程思想

一、链式编程OC中有一个使用非常广泛的框架——masonry。在masonry中,我们可以使用“点语法”实现方法调用。但是OC 的调用方法使用“[Class func]”。相比于OC中反人类的AutoLayout语法,masonry的链式语法使用的便利性,被广大iOS开发者所接受。masonry语法:↓[view mas_makeConstraints:^(MASConstra

2018-01-29 17:18:48 3934

iOS 进制重排需要的 order 文件生成代码

iOS 启动优化,二进制重排生成工具类 使用插桩技术,具体项目配置,请参考博客

2022-06-01

iOS重签名防护代码,包含内联汇编代码

重签防护代码

2021-12-29

ptrace防护.zip

ptrace 越狱调试防护

2021-12-28

iOS项目中未用到的方法查找.zip

该工具类是一个脚本文件。 使用方法: 执行 python selectorsunref.py 输入的第一个参数为xxx.app,可以把Xcode products目录下的xxx.app拖到命令行,这个参数是为了拿到.app下的mach-o文件,分析使用的方法和未使用的方法。 输入的第二个参数是工程目录,这个参数是为了递归遍历找到工程中所有的.h文件,然后过滤掉包含的协议方法。

2019-09-04

iOS项目查找无用的图片资源工具.zip

该资源是查找iOS项目中未用到的图片资源的工具代码,但查找结果删除时务必谨慎(谨防拼接图片名的方式使用图片,导致查找结果有误)。

2019-09-04

XcodeApp.sh

该文件是Xcode中代码自动重签名的执行脚本,可自动快速完成重签名操作。

2019-07-31

x264编译文件.zip

该资源是FFmpeg x264视频库编译的脚本文件,内涵iOS和安卓脚本。

2019-07-17

FFmpeg编译静态库脚本命令文件.zip

该文件下包含FFmpeg静态库编译脚本文件ffmpeg-build.sh 以及 gas-preprocessor.pl 和源码下载的可执行脚本ffmpeg-download.sh

2019-07-05

SocketRocket封装的Websocket

iOS 移动端的Websocket使用,SocketRocket框架将Websocket长连接框架已经封装实现到移动端。二次封装后即可使用

2018-02-28

TransformDemo

该Demo是CGAffineTransform 平移、旋转、缩放的基本使用

2018-02-28

空空如也

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

TA关注的人

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