iOS优化
文章平均质量分 73
ZhaiAlan
iOS开发工程师
展开
-
RxSwift 使用方式
最近项目业务,所有模块已经支持Swift混编开发,正在逐步使用Swift 方式进行开发新业务,以及逐步替换老业务方式进行发展,所以使用一些较为成熟的Swift 的三方库,成为必要性,经过调研发现RxSwift 在使用的情况上,较为成熟,且方便实用;以下介绍一些RxSwift 使用的一些方式和大家一起学习讨论。Swift为值类型,在传值与方法回调上有影响,RxSwift一定程度上弥补Swift的灵活性。原创 2023-07-12 17:46:50 · 885 阅读 · 0 评论 -
iOS 如何创建一个线程安全的数组
我们平时使用的NSMutableArray,在进行增删改查的时候,会出现数据异常的场景(关键是异常并不是必现的,不太好复现)运行代码,发现最后array的个数并不等于6000,多运行几次,发现每次的结果都不一样。1、通过NSLock锁实现。2、通过串行队列实现。原创 2023-06-29 15:21:25 · 1124 阅读 · 0 评论 -
iOS15新特性适配(告警:UITableView sectionHeader下移22像素,间距变高)
1、UINavigationBar在iOS 15中,UINavigationBar默认为透明。在滑动时会有模糊效果。如果想要一直就是模糊效果,可以通过改变scrollEdgeAppearance属性来实现。解决办法:UINavigationBarAppearance*barApp=[[UINavigationBarAppearance alloc]init];barApp.backgroundEffect=[UIBlurEffect effectWithStyle:UIBlurEffect原创 2021-11-25 14:33:03 · 4156 阅读 · 0 评论 -
iOS卡顿原理及优化方案
前言很多iOS 开发,都会面临到解决开发过程中的卡顿问题,从而也衍生出来很多的方法去解决卡顿问题,这篇文章来描述下iOS卡顿产生的原因,以及一部分解决办法;iOS卡顿原理1.像素是如何显示到屏幕上从最初的电子枪显示器说起,电子枪逐行读取像素点,逐行发射到屏幕上,每当一行扫描完成,显示器会发出水平同步信号HSync;然后继续下一行,直到最后一行完成一帧的绘制,电子枪恢复到起点继续下一帧的绘制,显示器会发出一个垂直同步信号VSync。对于iOS设备,VSync信号的间隔是16.7ms,也就是1秒原创 2020-05-14 09:47:35 · 2028 阅读 · 0 评论 -
iOS算法提升三(给定一个字符串,请找出不含有重复字符的最长子串长度)
题目:要求:给定一个字符串,请找出不含有重复字符的最长子串长度输入:‘abcabcbb’输出:3解释:因为无重复字符的最长子串是abc,所以长度为3输入:‘bbbbbbb’输出:“1”输入:”pwwkew“输出:3解释:因为无重复的字符的最长子串是wke,所以长度为3,请注意,你的答案必须是子串中的长度,‘pwke’是一个子序列,不是子串;/** 思路:...原创 2020-05-06 18:04:11 · 635 阅读 · 1 评论 -
iOS 探索KVO四(自定义KVO进阶)
前言前几篇KVO的文章介绍了一些KVO的使用方式和KVO的实现原理和自定义KVO,但是有几个问题没有解决,例如:如果监听多个属性,上篇文章中的自定义KVO就不能解决了,自动销毁等,本篇文章需要在上篇文章的基础上进行阅读;KVO监听多属性多属性监听KVO,Github地址首先引入思路 引入一个类来保存观察者 在保存观察者的时候,需要使用数组或字典进行保存 在...原创 2020-05-06 16:46:16 · 329 阅读 · 0 评论 -
iOS开发算法提升二(数组中两数之和为固定值返回下标)
题目: 给定一个整数数组,nums和一个目标值target ,请在数组中找出何为目标值的两个整数,并返回下标 要求: 不能出国内服利用这个数组中的同一元素,例如:8+8 = 16; 举例:给定nums = [2,3,9,12],target = 15; 因为给定的nums[1] + nums[...原创 2020-05-02 23:49:22 · 326 阅读 · 0 评论 -
iOS 面试题 sel详解weak本质
1.Runtime是什么?runtime 是由C 和C++ 汇编 实现的⼀套API,为OC语⾔加⼊了⾯向对象,运⾏时的功能2、⽅法的本质,sel是什么?IMP是什么?两者之间的关系⼜是什么?⽅法的本质:发送消息,消息会有以下⼏个流程1:快速查找(objc_msgSend)~cache_t缓存消息2:慢速查找~递归⾃⼰|⽗类~lookUpImpOrForward3:查找不到消息:...原创 2020-04-24 13:45:09 · 825 阅读 · 0 评论 -
iOS 逆向初探防护(fishHOOK防护)
前言在iOS开发中,始终都有这安全防护一直都是热门话题,很多的对于开发网络请求要使用https请求,使用RSA +AES加密,本地文件加密等等,这些都是整箱开发中的防护手段,这篇文章,一起来探索一下逆向开发防护的初探;逆向开发人员进攻:应用重签名并注入Framework代码Demo, 后续单独写一篇文章来介绍应用重签名并注入代码;这里先大概介绍一下:应用重签名,使用别人开发的应用(...原创 2020-04-01 17:09:18 · 973 阅读 · 0 评论 -
iOS逆向之fishhook原理
FishHookfishHook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文件加载原理,通过修改懒加载表(Lazy Symbol Pointers)和非懒加载表(Non-Lazy Symbol Pointers)这两个表的指针达到C函数HOOK的目的。在逆向中经常使用fishHook这个工具。所以在学习过程中,我们重点要了解其原理,这样能够对恶意代码进行...原创 2020-04-01 15:20:11 · 496 阅读 · 0 评论 -
本地创建cocoapods私有仓库
1.CocoaPods简介CocoaPods是专门为iOS工程提供第三方依赖库的管理工具,通过CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置,就可以直观、集中和自动化地管理我们项目的第三方库。CocoaPods将所有依赖的库都放在一个名为Pods的项目下,然后让主项目依赖Pods项目。然后,我们编码工作都从主项目转移到Pods项目。Pods项目最终会...原创 2020-03-31 16:19:23 · 1211 阅读 · 0 评论 -
iOS优美的内存管理
前言相关代码:工程Demo内存管理这篇文章主要会从内存布局,内存管理方案,ARC&MRC ,引用计数,弱引用,以及自动释放池这几个方面来进行详细的介绍;内存布局,五大区程序加载到内存中会被分开为几个区:内存地址从高到低分别是:内核区内核区:系统内核处理大小一般为1G stack(栈区):存储函数, 方法,常量等, 地址从高到低;(0x7,大概地址) he...原创 2020-03-25 16:40:41 · 274 阅读 · 0 评论 -
iOS底层探索十(方法的本质下-消息转发流程)
前言相关文章iOS底层探索二(OC 中 alloc 方法 初探)iOS底层探索三(内存对齐与calloc分析)iOS底层探索四(isa初探-联合体,位域,内存优化) iOS底层探索五(isa与类的关系)iOS底层探索六(类的分析上)iOS底层探索七(类的分析下)iOS底层探索八(方法本质上)iOS底层探索九(方法的本质下objc_msgSend慢...原创 2020-03-23 17:25:48 · 446 阅读 · 0 评论 -
iOS底层探索九(方法的本质中--objc_msgSend慢速及方法转发初探)
前言相关文章 iOS底层探索二(OC 中 alloc 方法 初探) iOS底层探索三(内存对齐与calloc分析)iOS底层探索四(isa初探-联合体,位域,内存优化) iOS底层探索五(isa与类的关系)iOS底层探索六(类的分析上)iOS底层探索七(类的分析下)iOS底层探索八(方法本质上) 相关代码: ...原创 2020-03-20 17:18:34 · 541 阅读 · 0 评论 -
iOS开发优化的起步之启动优化
前言作为开发人员,启动是App给用户的第一印象,对用户体验至关重要。任何开发的APP的业务迭代迅速,如果放任不管,启动速度会一点点劣化。为此iOS客户端团队做了大量优化工作,除了传统的修改业务代码方式,我们还做了些开拓性的探索,首先我们需要考虑的是,应用启动分为2种情况:冷启动:指 app 被后台杀死后,在这个状态打开 app,这种启动方式叫做冷启动,根据测试结果并非是杀掉进程后直接启动,...原创 2020-03-20 17:18:51 · 769 阅读 · 0 评论