自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (19)
  • 收藏
  • 关注

原创 约束卡顿

卡顿优化

2026-01-22 09:11:50 272

原创 通用链接~~~

https://blog.csdn.net/weixin_43864837/article/details/134668791https://ix518.blog.csdn.net/article/details/131628155?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7EPaidSort-1-131628155-blog-127691852.2

2026-01-11 15:49:14 147

原创 悬垂指针 和 野指针

悬垂指针和野指针确实容易混淆,但本质都是指向无效内存,只是产生原因不同。两种指针的共同点都是EXC_BAD_ACCESS的常见原因,但预防方法不同。悬垂指针更多涉及对象生命周期管理,野指针更多是初始化问题;悬垂指针(Dangling Pointer)和野指针(Wild Pointer)都是无效指针,但产生原因和场景不同:常见场景:对象释放后,指针未置为 使用 (OC)或 (Swift)C/C++ 中:局部变量离开作用域后多线程中一个线程释放内存,另一线程仍在访问常见场景:声明指针变量但未初

2025-12-31 09:40:07 419

原创 EXC_BAD_ACCESS 和僵尸对象

EXC_BAD_ACCESS是"病",僵尸对象是"诊断工具"。不是一回事,但僵尸对象专门用来诊断EXC_BAD_ACCESS这类内存问题。

2025-12-31 09:27:15 345

原创 内存优化-(二)-oc&swift

无论是Objective-C还是Swift,内存优化的核心思想都是相似的:减少占用、及时释放、避免泄漏。但是,由于Swift在语言层面提供了更多值类型和现代语法,我们在Swift中可以通过合理使用值类型、懒加载等来优化内存。而在Objective-C中,我们更依赖于手动管理引用计数和自动释放池。在实际开发中,我们应该根据项目使用的语言,结合工具进行 profiling,找到内存瓶颈,然后针对性地优化。Objective-C 特别注意事项。

2025-12-31 08:43:02 633

原创 使用 os_unfair_lock 替代 DispatchQueue?!

我们使用 os_unfair_lock 来替代 DispatchQueue 作为锁机制。注意,os_unfair_lock 是 iOS 10.0+ 和 macOS 10.12+ 可用的。使用 os_unfair_lock 时需要注意,它必须被存储在适当的位置(例如,作为实例变量或静态变量),并且必须确保锁被正确初始化和使用。另外,os_unfair_lock 是一个互斥锁,并且不像 DispatchQueue 那样可以用于异步任务。它只是用于同步代码的锁。

2025-12-31 08:19:15 407

原创 使用 OSSignpost 标记内存关键节点

import os= nil,log: log,} else {// 使用示例} else {return nil。

2025-12-31 08:08:49 201

原创 内存优化-(一)

准备分成几个核心部分:诊断工具、编码实践、架构设计,最后总结一些关键原则。首先想到的是要给出一个全面的框架,因为内存优化涉及多个层面。内存优化不仅仅是代码层面的技巧,更重要的是建立正确的意识和持续监控的习惯。需要强调避免过度优化,内存管理要在性能、开发效率和可维护性之间取得平衡。考虑使用值类型(Struct)替代引用类型(Class),减少引用计数开销。:内存优化不是一次性的,应在开发周期中持续监控,尤其关注。:UIImage 未解码时占用较小,解码后内存暴增。:可视化对象引用关系,快速定位循环引用。

2025-12-31 08:02:07 790

原创 charles关闭后mac无法连接网络

简单来说:Charles 为了抓包,让系统把流量都导给它;但它关闭时,这个“导流”指令没有撤销,系统还在傻傻地把数据往一个不存在的端口送,所以全部失败了。

2025-12-30 11:40:46 438

原创 ios开发逆向安全防抓包

使用SSL Pinning(证书绑定):在客户端内置服务器证书或公钥,在建立SSL/TLS连接时进行验证,防止中间人攻击。避免使用明文传输:所有网络请求使用HTTPS,并且确保正确的证书验证。使用工具对Objective-C代码进行混淆,增加逆向难度。例如,类名、方法名、属性名使用无意义的字符串替换。使用系统API检测是否被调试,如果被调试则采取相应措施(如退出应用)。检查应用是否被重签名或篡改,可以通过比较嵌入的签名或检查文件完整性来实现。对敏感字符串进行加密,防止在二进制文件中直接显示。

2025-12-29 10:25:35 759

原创 卡顿监测原理

一帧画面渲染时间超过 16.67ms → 丢帧。

2025-12-16 23:31:48 483

原创 ios卡顿监测和优化(二)

iOS应用卡顿监测与优化是一个系统性工程,可以从开发阶段和线上发布后两个维度展开。

2025-12-16 22:08:00 398

原创 和appcode有相同功能的代码检测工具推荐

AppCode 作为一款强大的 iOS/macOS 开发 IDE,其代码检测功能涵盖了等多个方面。

2025-11-14 12:48:34 492

原创 ios卡顿优化

iOS 卡顿优化的核心思路是“主线程减负、渲染优化、资源高效利用”定位问题:使用 Time Profiler、Core Animation 等工具找到卡顿的具体原因(如耗时函数、过度绘制)。针对性优化主线程阻塞:将耗时操作移至子线程。UI 渲染瓶颈:简化视图层级、减少过度绘制、优化 Autolayout。资源问题:压缩图片、使用高效格式、及时释放内存。验证效果:通过 Instruments 或第三方工具监控优化后的帧率、内存占用,确保卡顿问题解决。

2025-11-14 07:34:31 1166

原创 ios开发图片上传git时压缩 图片被真实压缩了吗 此时再下载下来 图片大小变了吗

特性Git Hooks (压缩)Git LFS (管理)图片是否被压缩?是,本地文件被压缩工具处理。否,文件以原始大小存储在 LFS 服务器。下载后文件大小?变小,下载的是压缩后的版本。不变,下载的是原始大小的版本。核心目的减小文件体积,优化仓库和 App 大小。管理大文件,避免其拖累 Git 仓库性能。适用场景App 中最终使用的图片资源(如 jpg, png)。需要保留原始版本的大文件(如设计源文件、高清素材)。对于 iOS 开发中用于 App 内展示的图片资源,

2025-11-13 22:55:41 599

原创 Git LFS

Git LFS 是管理 Git 仓库中大文件的完美解决方案。显著减小仓库体积,让克隆和拉取速度飞快。保持 Git 操作的流畅性,即使项目中包含了大量设计源文件或二进制库。清晰地分离代码和大文件,使仓库更 “干净”。强烈建议在任何有大文件的 Git 项目中都采用 Git LFS,它能为你和你的团队节省大量的时间和带宽。

2025-11-13 22:44:19 704

原创 图片上传git时压缩

使用 Git Hooks 是在提交前自动压缩图片的绝佳方式,能有效控制 Git 仓库的大小。方案一 (sips:适合个人项目或快速设置,无需额外依赖。方案二 (pngquantjpegoptim:压缩效果更好,推荐用于对体积敏感的项目。长远之计:结合Git LFS来管理所有大文件,这是处理二进制资产的最佳实践。

2025-11-13 22:42:30 748

原创 Xcode的App Thinning Size Report分析包体积

通过,你能精准定位 App 体积的主要来源(是图片过大?还是第三方库冗余?),再针对性优化,从而有效减小用户下载大小,提升下载转化率。

2025-11-13 22:36:23 888

原创 ios-AVIF

AVIF 代表了图片格式的未来发展方向,提供了无与伦比的压缩效率和丰富的功能。在 iOS 开发中,它是继 WebP 之后又一个强大的包体积优化和网络性能优化工具。根据你的项目兼容性要求,选择合适的图片格式将为用户带来更快的下载速度和更好的体验。

2025-11-13 22:20:47 824 1

原创 ios-WebP

WebP 是一种非常优秀的图片格式,在 iOS 开发中,它是减小包体积和优化网络性能的强大工具。对于 iOS 14+ 的项目:强烈建议将所有合适的图片资源转换为 WebP 格式。对于需要兼容旧版本 iOS 的项目:可以考虑使用SDWebImage等库来引入 WebP 支持,特别是对于网络图片加载场景。通过合理地使用 WebP,你可以在不牺牲用户体验的前提下,显著提升你的 App 性能。

2025-11-13 22:19:56 1043

原创 ios包体积管理方案

iOS 包体积管理是一个持续的、需要团队全员参与的过程。分析:用找到体积的 “元凶”。优化资源:压缩、清理、使用合适的格式(SVG, WebP/AVIF)。代码:清理无用代码,审慎引入第三方库。配置:正确设置,开启Bitcode。策略:利用和来减小用户的初始下载大小。监控:将体积检查自动化,并定期回顾。通过以上这些方法,你完全可以将一个几百兆的 App 优化到一个非常理想的大小。

2025-11-13 22:18:37 1005

原创 热更新相关

并发队列+同步函数: 没有开启新线程;串行执行任务手动创建的串行队列+同步函数:没有开启新线程;串行执行任务主队列+同步函数:死锁并发队列+异步函数:有开启新线程;并发执行任务;手动创建的串行队列+异步函数:有开启新线程,且只开启一条新线程;串行执行任务;主队列+异步函数:没有开启新线程,串行执行任务注意:主队列的任务只会在主线程执行;同步函数没有开启...

2024-01-18 17:03:05 449

原创 devicesupport下载靠谱资源

iOSDeviceSupport: 存放iOS镜像文件,真机调试包,供大家参考,目前收录iOS8.0~iOS16持续更新中 - Gitee.com

2024-01-02 11:13:35 650

原创 责任链vs金融登录

金融app相对普通app而言,出于安全考虑,其安全校验方式比较多,以某些银行app为例,手机号登录成功后,会增加指纹、手势、OCR人脸等验证!//0 1 2 模拟责任链中密码、手势、指纹的优先级。//沿着责任链,指派给下一个业务处理。//没有业务处理,上抛。//当前业务处理掉了,上抛结果。//各个业务在该方法当中做时机业务处理。//基类BusinessObject。//当前业务进行处理。//模拟处理逻辑优先级。//响应者的处理方法。

2023-07-26 20:35:52 989

原创 ios with shell

iOS 自定义pod库插入shell脚本 - 简书

2023-05-08 20:24:50 210

原创 iosApplePay

4.2.1>Creating and Populating the Pass Package(创建一个包含Pass所有信息和资源文件的文件夹):Passes 的创建需要一个 pass.json 文件,这个 pass.json 文件包含 pass 的所有信息,如票据类型,logo、icon资源图片,过期时间、票据描述等信息。// 2.7 通过指定merchantCapabilities属性来指定你支持的支付处理标准,3DS支付方式是必须支持的,EMV方式是可选的,

2023-04-07 13:24:55 3834

原创 web--缓存(二)(NSURLProtocol)

NSURLProtocol是一个抽象类,我们在使用时一般使用它的子类,其作用是可以拦截网络请求,并可用重定向网络请求。这种方法还是隐藏着很多坑的,它的使用方法就不在这里赘述了,ios wkwebivew拦截js、css,图片资源:https://www.jianshu.com/p/4fc13d4d5607ios开发之---NSURLProtocol:https://www.jia...

2023-04-06 16:38:57 500

原创 App间URLScheme跳转配置

AScheme跳转到BScheme配置-iOS文档类资源-CSDN下载1、AScheme工程配置1.1》AScheme的info.plist中配置LSApplicationQueriesSchemes(即BScheme的URL Schems:AppB)1.2》AScheme的跳转代码2、BScheme工程配置2.1》BScheme配置自己的URL Type下的URL Schemes即AppB2.2》BScheme的AppDelegate中接收从AScheme跳转过来的数据..

2022-02-21 16:27:42 483 1

原创 ios解析测试包的crash

条件:用本死的jekins打的包:可在内网下载测试包的dsym文件测试同学下载的内网包出现crash:1》获取.crash文件1.1》xcode->window->Devices and Simulators ->View Device Logs->找到对应crash;1.2》如果应用已上架 通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户的crash日志

2022-02-15 13:14:34 349

原创 ios加密算法AES

1、加密相关:加密算法概述 https://mp.weixin.qq.com/s/aorP5T5rDFiljIMeLXCBvg2、ECB和CBC:ECB和CBC区别:https://blog.csdn.net/hqmln/article/details/84715503ECB和CBC模式解读:https://www.cnblogs.com/wangle1001986/p/11468419.html3、AES相关:1》AES加密过程详解https://blog.csdn.net/q

2022-01-18 13:24:01 3087

原创 网络协议--tomcat服务器搭建

启动服务器模拟软件tomcat :1》java环境搭建:安装JDK(JDK==> JRE(java run environment)===> JVM (编译成的字节码转换成二进制文件))2》启动tomcat服务器:2.1》Mac电脑: cd到tomcat的bin文件夹(即startup.sh所在的文件夹);2.2》直接执行shstartup.sh会报错:➜ bin sh startup.shCannot find ./catalina.shThe file...

2021-11-23 00:18:45 551

原创 迁移git仓库某分支到另一个仓库某分支

当前仓库地址为:git@git.xiaojukeji.com:one-ios/UnifyPassportService.git待迁移分支为:global_release_20210916_nationalTick目的仓库地址为:git@git.xiaojukeji.com:global/UnifyPassportService.git目的分支为:global_release_20211028_nationalTick步骤:cd到.git目录下并checkout到old

2021-10-28 16:45:44 5515

原创 ios15导致flutter的默认字体变粗

在Flutter自定义字体 - 芒果文档升级为ios15后导致,flutter未设置font的字体变粗,后做了如下对比Text( 'Get Started1', style: TextStyle( fontSize: 50, fontWeight: FontWeight.normal, ),),Text( 'Get Started2', style: TextStyle(fontSize: 50),),Text( 'Get Started3', st

2021-10-13 21:51:41 2965

原创 重签名

重签名:旧包的bundle identifier是com.bxbank.mobile-bank ;用新的bundleIdentifier对旧包重新签名一、从embedded.mobileprovision中提取出entitlements.plist权限文件1》security cms -D -i embedded.mobileprovision > temp.plist2》/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' temp.

2020-05-25 19:15:26 1217

原创 自动化打包---fastlane

简单写下我使用fastlane的过程,及遇到的问题,希望自己下次在用到fastlane的时候能迅速避坑,希望也能帮助在看文章的你:我的步骤如下:1、配置ruby环境:fastlane是基于ruby的,如果你对电脑没有ruby的话。在这有个小建议:希望你安装国内的ruby源,因为如果你用国外的ruby的话,在下面为工程安装fastlane时,因为墙的原因,终端会卡在某个地方如果你已经安装...

2019-11-09 19:41:57 462

原创 集成RN遇见的坑

先来简单了解下相关概念:搭建环境:1、安装必需的软件1》Homebrew:Mac系统的包管理工具,用于安装NodeJS和一些其他必须的工具软件2》Node:用Homebrew安装Node.js(是一个基于Chrome V8引擎的js运行环境)设置npm镜像:(npm:node package manager 节点包管理器,是Node.js的包管理器,用于节点插件的管理...

2019-09-28 08:48:24 806

原创 NSURLProtol(NSURLSession与 NSURLConnection区别)

在使用NSURLProtocol拦截原生请求时,也有坑,这关乎于你用的AFN是哪个版本的,当然如果你用的是最新的AFN(NSURLSession)那么你会遇见拦截不到请求的问题(待完善,工作笔记在公司电脑上,且等我为你细细分解)...

2019-09-28 08:27:44 303

原创 web--缓存(二)(NSURLProtocol)

之前的工作笔记在公司电脑上,因此这里就先来浅谈下NSURLProtocol做web缓存时令人印象深刻的坑吧!1、使用的是UIWeb和WKWeb的区别:UIWeb就比较简单了,随便网上搜下就能找到NSURLProtol使用方法,按上边的做就行;WKWeb就有点麻烦了,因为和UIWeb不一样,wk需要做些特殊的设置,才能拦截到https和http请求(待完善);2、对于post请求的处...

2019-09-28 08:23:17 268

原创 web--缓存(一)(HTTP + APP cahe)

最近在写一个web容器,容器有一一个小功能是要对web做缓存,所以最近一直研究ios的web缓存,在研究过程中遇到不少问题也收货颇多,现总结如下:web缓存的目的:节省服务器资源;使页面加载更流畅,减少等待时间增加用户体验;节省用户流量等。。。web缓存有很多种方法NSURLCache、App Cache(Manifest文件)、NSURLProtocol:1、NSURLCache(i...

2019-09-08 16:56:53 727

原创 安卓笔记-第一行代码版(看书慢,故不打算再抠书,但笔记是心血)

/Users/yangyangzi/Desktop/YangZi2/android/第一行代码学习笔记.rtfd (公司电脑)第一章安卓系统架构四层架构:1、Linux内核层:为安卓设备的各种硬件提供底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、wifi驱动、电源管理2、系统运行库层:通过c/c++库为安卓系统提供主要特性支持。如sqlite库提供数据库支持,o...

2019-09-02 19:21:21 3090

自适应baseViewcontroller

自适应baseVC

2025-12-16

Suan.zip

Suan

2025-12-12

桥接模式-继承-iOS

桥接模式-继承-iOS

2023-07-28

策略模式的实例代码demo

策略模式的实例代码demo

2023-07-28

桥接模式-代理-iOS

桥接模式-代理-iOS

2023-07-28

责任链VS金融登录校验

对于责任链的思考,对于金融登录校验的思考

2023-07-26

AScheme跳转到BScheme配置

AScheme跳转到BScheme配置 注:截图四张,只是从AScheme跳转到BScheme的配置;但是两个工程的代码是AScheme跳转到BScheme,并支持了从BScheme跳转到AScheme

2022-02-21

ios解析crash示例文件上传

ios解析crash示例文件上传

2022-02-15

YHELKitSDK-master.zip

ios加解密 AES:128/192/256; RSA; Base64;MD5

2022-01-18

WKWebView原生与H5交互

为防止造成混淆,这里只写WKWebView原生与H5交互关键代码

2018-10-30

UIWebView原生与H5交互

UIWebView原生与H5交互,pre;confirm;等包含三个H5页面跳转的交互demo

2018-10-30

gcd处理ios多请求常用的几种情况

//1、进某页面要发四个请求,四个请求之间无影响 //2、进某页面要发四个请求,四个请求之间无影响,等所有请求回来刷新界面 //3、进某页面要发四个请求,其中某个请求的请求参数是另一个请求结果的返回字段(请求2依赖于请求1的回调结果) //4、进某页面要发四个请求,其中某个请求的两个请求参数是另两个请求结果分别返回的两个字段(请求3依赖请求1、2的回调结果) //5、进某页面要发四个请求,请求3依赖请求2的回调结果,请求2依赖于请求1的回调结果 //6、进某页面要发100个请求

2018-10-24

yfc.zip 证书测试APNS

yfc.zip 证书测试APNS

2021-08-10

dispatch_semaphore two

ios开发GCD的dispatch_semaphore:1、常用函数及作用 2、信号量的用途:1》同步不同线程 2》当做锁来使用:3》控制同时执行的线程数:

2018-10-22

dispatch_barrier_(a)sync

异步和同步的栅栏函数都有以下特点: 1、通过dispatch_barrier_(a)sync添加的block会等待前边所有的block执行完(不包括回调)才执行。 2、在其后添加的block会在dispatch_barrier_(a)sync添加的block执行完之后(不包括回调)再执行; 不同点: 1、dispatch_barrier_sync:同步栅栏函数在原线程中执行block,不开辟新线程;在将任务插入到queue的时候,       dispatch_barrier_sync需要等待自己的任务结束之后才会继续程序,然后插入被写在它后面的任务。 2、dispatch_barrier_async:异步栅栏函数会开辟新线程执行block;ispatch_barrier_async将自己的任务插入到queue之后,不会等待自己的任务结束,它会继续把后面的任务插入到queue。

2018-10-25

h5余原生交互

1、H5调原生:1》通过代理调原生 2》block调原生方法 2、javaScriptCore版原生调H5 1》用evaluateScript方法直接调用 2》objectForKeyedSubscript + callWithArguments 方法调用

2018-10-30

dispatch_group

两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都不会出现这种状况。这也是dispatch_group的一个坑人的地方。我们在使用dispatch_group时一般都是想异步执行任务,所以,一定要注意这个坑

2018-10-18

深拷贝与浅拷贝;copy与mutableCopy;容器类型的深拷贝;copy和strong;

1、只有NS类型调用copy方法才是浅拷贝,其他的情况全是深拷贝 2、容器类调用copy或mutableCopy能出现的深拷贝的情况下,只是容器的深拷贝,而非容器内元素的深拷贝 3、无论是声明NSString还是NSMutableString类型的属性时,我们希望此属性被赋值为NSMutableString类型的字符串后,此属性不会因这个可变类型字符串的改变而改变(这也是多数情况下的用法),那就用copy修饰属性

2018-11-06

dispatch_group包含wait包含forever时长

两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都不会出现这种状况。这也是dispatch_group的一个坑人的地方。我们在使用dispatch_group时一般都是想异步执行任务,所以,一定要注意这个坑

2018-10-18

dispatch_group包含wait

以上两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都不会出现这种状况。这也是dispatch_group的一个坑人的地方。我们在使用dispatch_group时一般都是想异步执行任务,所以,一定要注意这个坑

2018-10-18

dispatch_semaphore

//信号量用途1://两个资源,三个线程执行;设定信号量值为2,先执行两个线程,等执行完一个,才会继续执行下一个,保证同一时间执行的线程不超过两个,保证线程的最大并发数 //信号量用途2://创建信号量的时候当锁使,保证wait和signal之间只有一个线程能进去 //信号量用途3:同步不同线程的操作

2018-10-19

NSPredicate

NSPredicate的使用总结,OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤出我们想要的数据

2018-08-17

respondsToSelector与instancesRespondToSelector

1、二者的作用相同:都是判断某个类是否实现了某方法(注意:是是否实现某方法,必须在.m里写了{}的方法,只在.h里声明了不算) 2、有实际意义的组合只有3种 @1   类 + instancesRespondToSelector + 实例方法 yes =  类是否实现了某实例方法 @2  类 + respondsToSelector + 类方法    yes = 类是否实现了某类方法 @3  实例 respondsToSelector 实例方法 yes  =  类是否实现了某实例方法 且@1和@3的作用相同

2018-10-31

fastLane.zip

ios单工程自动打包,简单写下我使用fastlane的过程,及遇到的问题,希望自己下次在用到fastlane的时候能迅速避坑,希望也能帮助在看文章的你

2019-11-09

cocoapodsAndFramework

把组件打包成静态framework,分别做成sdk拖拽到本地工程及将此framework进行cocoapods管理使用的异同,两种方式图片和xib的取出路径不同

2019-04-23

空空如也

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

TA关注的人

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