首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

检测iOS项目中使用的方法检测iOS项目中使用的方法

1、检查ObjectiveC项目中 使用的方法 准备工作 已自己的项目为例,将工程进行build,后show in finder ? 显示包内容 ?...工具地址 https://github.com/nst/objc_cover 此脚本方法只能检测 OC 可能使用的方法,不适用其他场景 开始检测 ? 输出 ?...所有的使用方法都会被列出,包含pod三方库中的方法; 原理 原理利用 Mach-O 文件的结构和展示内容: __TEXT:__objc_methname: 中包含了代码中的所有方法; __DATA....+)\])") 2、检查Swift项目中使用的方法、属性、类 工具地址 https://github.com/zColdWater/swift-scripts 此脚本方法只能检测 swift...可能使用的方法、属性、类 开始检测 1. cd 2.

3.6K20

iOS检查使用图片资源方法

前言 app项目随着需求越来越多,app的体积越来越大.尤其在iOS端app下载超过150M,则会无法使用移动网络下载,也必然会流失小部分流量..../install.sh 执行命令: fengniao -p /Users/xinxi/Documents/iOSProject/DDProject_iOS image 扫描到使用资源总数 image...image 报告展示 报告展示:版本、使用总数据量、使用资源列表 上传报告 在QA管理平台中,包大小检查汇总模块可以汇总定期扫描的测试报告....image 后续 后续会把iOS检查使用图片资源加入到专项测试中,每个版本的专项测试报告附上扫描结果方便开发优化项目....学习文章 iOS之自动检测项目中的无用的图片资源 https://blog.csdn.net/luochuanAD/article/details/75995323 LSUnusedResources的

1.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

iOS开发·runtime原理与实践: 消息转发篇(Message Forwarding) (消息机制,方法实现+API不兼容奔溃,模拟多继承)

动态特性:方法解析和消息转发(Method Resolution,Fast Rorwarding,Normal Forwarding),第三节将介绍方法交换几种的实战场景:特定奔溃预防处理(调用实现方法...setBackgroundColor:[UIColor whiteColor]]; self.title = @"Test2ViewController"; //实例化一个button,实现其方法...(void)forwardInvocation:(NSInvocation *)anInvocation { NSLog(@"NSObject+CrashLogHandle---在类:%@中 实现该方法...3.2 苹果系统API迭代造成API不兼容的奔溃处理 3.2.1 兼容系统API迭代的传统方案 随着每年iOS系统与硬件的更新迭代,部分性能更优异或者可读性更高的API将有可能对原有API进行废弃与更替...注意测试的时候,选择iOS10系统的模拟器进行验证(没有的话可以先Download Simulators),安装完后如下如选择: ?

1.8K11

iOS 小技能: Responder Chain(响应者链)【上篇】

一个事件响应者的完成主要经过两个过程:hitTest方法命中视图和响应者链确定响应者。...hitTest方法首先从顶部UIApplication往下调用(从父类到子类),直到找到命中者,然后从命中者视图沿着响应者链往上传递寻找真正的响应者。...当触摸事件发生后,系统会将触摸事件以UIEvent的方式加入到UIApplication的事件队列中,UIApplication将事件分发给根部的UIWindow去处理,UIWindow则开始调用hitTest方法进行迭代命中检测...命中检测具体迭代的过程为:如果触摸点在当前视图内,那么递归对当前视图内部所有的子视图进行命中检测;如果不在当前视图内,那么返回NO停止迭代。这样最终会确定屏幕上最顶部的命中的视图元素,即命中者。...4.2.响应者链 通过命中测试找到命中者后,任务并没有完成,因为最终的命中者不一定是事件的响应者。

1.1K30

腾讯会议10秒编译百万代码|鹅厂编译加速标杆案例公开

,lib_app link 源码库; 命中增量时,通过 add_library 导入这个预编译的产物作为 library,lib_app link 预编译库; 命中增量时,通过 add_subdirectory...4.4 半自动Generate 对于 iOS 和 OS X 平台,也可以 在 xcode 的 Pre-actions 环节插入一段脚本,来检测模块的命中列表是否有变更: 但由于 xcode 本身检测到工程结构改变会自动停止编译...当 xx_plugins 命中增量时,由于 lib_app 依赖了 xx_plugins 源码库,cmake 会同时编译 lib_app 与 xx_plugins; 当 xx_plugins 命中增量时...gradle 本身就是脚本,那么我们可以在增量脚本执行后,根据脚本的执行结果,命中产物的模块则以 maven 方式依赖,命中的则以源码依赖。...比如模块 B 命中增量、模块 C 命中时,由于 B 使用 projectWm 替换成了 maven 依赖,而模块 C 会因为模块的 maven 产物中 pom.mxl 定义的依赖关系给带过来,也就是模块

66030

腾讯会议10秒编译百万代码|鹅厂编译加速标杆案例公开

,lib_app link 源码库; 命中增量时,通过 add_library 导入这个预编译的产物作为 library,lib_app link 预编译库; 命中增量时,通过 add_subdirectory...4.4 半自动Generate 对于 iOS 和 OS X 平台,也可以 在 xcode 的 Pre-actions 环节插入一段脚本,来检测模块的命中列表是否有变更: 但由于 xcode 本身检测到工程结构改变会自动停止编译...当 xx_plugins 命中增量时,由于 lib_app 依赖了 xx_plugins 源码库,cmake 会同时编译 lib_app 与 xx_plugins; 当 xx_plugins 命中增量时...gradle 本身就是脚本,那么我们可以在增量脚本执行后,根据脚本的执行结果,命中产物的模块则以 maven 方式依赖,命中的则以源码依赖。...比如模块 B 命中增量、模块 C 命中时,由于 B 使用 projectWm 替换成了 maven 依赖,而模块 C 会因为模块的 maven 产物中 pom.mxl 定义的依赖关系给带过来,也就是模块

1.5K80

iOS14适配汇总:【1、隐私权限相关:定位、相册、IDFA 2、KVC相关3、UIView相关;4、网络相关】

cell.addSubView方法,因此与之对应的方法(UITableViewCell *)[SubView superview] 和cell.subviews方法 都要注意谨慎使用和处理 iOS14适配...CALayerDelegate的displayLayer方法的处理机制(问题:无法显示图片) IV、第三方框架相关 4.1 QMUIKit iOS14 下首次唤起键盘卡住主线程 Main Thread...Checker 对其做了兼容,发现 App 自己修改了这些方法的实现,才报错,没修改则不报错。...检测方式可以打条件符号断点,然后把 QMUI 那段代码注释掉,运行起来后会发现依然能命中这个断点,说明系统自身确实是在子线程访问了(UIKit 这种行为特别多,不只是这里)。...所以从原理上看,QMUI 命中这个主线程检测是不可避免的,目前只是做了一些优化,只有真正使用了 QMUITheme 组件时才会出现这个情况,没使用的时候就不会命中,以减少一部分的出错场景。

1.6K30

runtime的那些事(一)——runtime基础介绍

对于 iOS 开发者来说,我们只需要关注 Modern 版本即现行版本的runtime 即可。...当以上两步没问题后,将开始查找该类的 IMP,默认先从 cache 中寻找,若命中则执行对应的方法 4. 若 cache 中无法命中,则会尝试从方法列表 methodLists 中寻找 5....,最常用的,就是对象、类去调用一个添加 IMP 实现的方法,去查看消息机制转发执行的过程。...:(SEL)sel 这是系统为我们提供的第一次解决 IMP 命中机会,可以为对象动态添加 IMP 方法解析。...消息转发流程是把识别的消息分发给了其他不同接收对象,又或者是将所有识别消息发送给同一个接收对象,其具体实现方式完全可以自由控制。

1.3K20

HTTP 缓存

Cache 几乎无处不在,CPU 的 L1 L2 L3 Cache、iOS 系统的 clean page 和 dirty page 机制、HTTP 的 tag 机制等等,这些背后都是 Cache 设计思想的应用...HTTP 头信息控制缓存 分为两种 强制缓存 协商缓存 强制缓存如果命中缓存则不需要和服务器端发生交互,而协商缓存不管是否命中都要和服务器端发生交互,强制缓存的优先级高于协商缓存。...匹配流程如下: 客户端发起请求,根据 Expires/Cache-Control 判断是否命中强制缓存 若命中,则从缓存获取资源 命中,则发送请求给服务器 根据响应的 Last-Modified/ETag...判断是否命中协商缓存 若命中,则从缓存获取资源 命中,则使用服务器端返回的资源 强制缓存 可以理解为无须验证的缓存策略。...选择 ETag 或 Last-Modified 来做验证,在使用缓存资源之前一定会去服务器端做验证,命中缓存时会比第一种情况慢一点点,毕竟还要发请求进行通信。

65530

微信小程序性能监控方式

一、小程序启动耗时1) 用户首次访问或小程序同步更新时,命中环境预加载 2) 用户非首次访问,命中环境预加载 3) 用户非首次访问,命中环境预加载1、环境预加载​编辑切换为居中添加图片注释,不超过 140...字(可选)2、用户首次访问或小程序同步更新时,命中环境预加载启动流程​编辑切换为居中添加图片注释,不超过 140 字(可选)1) 资源准备信息获取: 小程序的头像、昵称、版本、配置、权限等基本信息(同步请求...3、官方建议标准安卓ios需要下载或更新时3.7s1.8s使用本地代码包时2.6s0.9s4、性能制约因素平台: 不同平台下(安卓、iOS、PC 等)设备性能、操作系统、框架实现、优化方案存在较大差异,...两个平台的设备性能、系统功能和启动流程实现存在一定差异:iOS 设备的平均性能要好于安卓;iOS 小程序和微信共用进程,而 Android 上小程序运行在独立进程,需要额外的进程创建和一些基础模块的初始化流程...;iOS 上需要使用系统提供的 WebView 和 JavaScript Core,初始化开销几乎可以忽略;安卓 UI 和系统组件的创建的开销远高于 iOS

1.9K20

iOS微信全文搜索技术优化

SQLite FTS3和FTS5的大部分性能很接近,FTS5索引的生成耗时比FTS3高一截,这个有优化方法。 综合考虑这些因素,我们选择SQLite FTS5作为iOS微信全文搜索的搜索引擎。...曾经iOS微信在这里踩了很多坑,打了很多补丁都不能完整解决这个问题,我们需要一个更加体系化的方法来解决这个问题。...同时,我们会在内存中cache本次微信运行期间产生的建索引业务数据,在极端情况下给没有来得及建索引的业务数据提供相对内存搜索,保证搜索结果的完整性。...因为cache上一次微信运行期间产生的建索引数据需要引入额外的磁盘IO,所以微信启动后会触发一次建索引逻辑,对现有的建索引业务数据建一次索引。...总结一下触发建索引的时机有三个: 建索引业务数据达到100条。 进入搜索界面。 微信启动。

2.2K60

微信全文搜索耗时降94%?我们用了这种方案

SQLite FTS3 和 FTS5 的大部分性能很接近,FTS5 索引的生成耗时比 FTS3 高一截,但这个有优化方法。...这个能力 FTS5 还没有,而 FTS5 的自定义辅助函数支持在搜索时获取到所有命中结果中的每个命中 Token 位置。...曾经 IOS 微信在这里踩了很多坑,打了很多补丁都不能完整解决这个问题,我们需要一个更加体系化的方法来解决这个问题。...因为 cache 上一次微信运行期间产生的建索引数据需要引入额外的磁盘 IO,所以微信启动后会触发一次建索引逻辑,对现有的建索引业务数据建一次索引。...总结一下触发建索引的时机有三个:建索引业务数据达到 100 条;进入搜索界面;微信启动。

2.6K62

我的2020 九月iOS面试秘籍,为你的跳槽保驾护航

3.1 Runtime消息传递: 通过哈希算法,先从方法缓存中查找,如果命中,调用方法结束流程 如果缓存中没有,则去当前类的方法列表中查找,如果命中,调用方法,加入当前方法缓存中,结束流程 如果当前类没有对应方法...,则去逐级父类方法列表中查找,如果命中,调用方法,加入当前方法缓存中,结束流程 4.如果方法都不存在,进入方法动态解析,转入消息转发流程。...+load 方法会在加载类的时候就被调用,也就是 ios 应用启动的时候,就会加载所有的类,就会调用每个类的 +load 方法。...i += 1 }else { ans.append(a[i]) i += 1 } } //数组a有合并元素...while i < a.count { ans.append(a[i]) i += 1 } //数组b有合并元素 while j <

75210

Spring Boot 集成 本地缓存Guava框架

它是应用层获取数据的第一道缓存,应用层获取数据时先访问本地缓存,如果命中,再通过远程从 L1 缓存层获取,最终获取到的数据再预热到本地缓存中。...public User load(Long id) throws Exception { System.out.println("缓存命中...CacheStats 支持的监控统计维度: requestCount():返回Cache的lookup方法查找缓存的次数,不论查找的值是否被缓存。...hitCount():返回Cache的lookup方法命中缓存的次数。 hitRate():返回缓存请求的命中率,命中次数除以请求次数。 missCount():返回缓存请求的命中的次数。...missRate():返回缓存请求命中的比率,命中次数除以请求次数。 loadCount():返回缓存调用load方法加载新值的次数。

1.2K20

【愚公系列】软考高级-架构设计师 019-存储管理(快表、段式存储、段页存储)

《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。...当进行地址转换时,CPU首先检查快表:如果在快表中找到对应项(快表命中),则直接使用快表中的信息进行地址转换,不需要访问内存。...如果未找到(快表命中),则需要访问内存中的页表(慢表),将结果放入快表中,这个过程可能涉及到替换已有的快表项。2.慢表慢表即存放在内存中的页表。...在快表命中的情况下,CPU必须访问这个慢表来获取所需的页表项,然后进行地址转换。3.访问过程使用快表:首先查找TLB,如果找到(命中),直接进行地址转换,这是最快的路径。...访问慢表:如果TLB命中,那么CPU需要访问内存中的页表来查找所需的映射,然后更新TLB,这需要更多时间因为涉及到两次内存访问(一次查页表,一次访问数据)。

10521

《计算机系统2》学习笔记

小端法:低位数在低地址,x86机器,Intel兼容机,Google的Android,Apple的iOS。 大端法 大端序是指机器选择在内存中按照从最高有效字节到最低有效字节的顺序存储对象。...do-while循环 while循环 第一种方法,先跳转到测试 第二种方法,先测试再开始do-while循环 for循环 先初始化,然后变成while循环 Switch Switch语句可以通过...存储器层次结构 高速缓存 缓存不命中 冷不命中(或强制性不命中) 由于高速缓存开始为空并且这是对块的第一次引用,所以发生冷不命中。...平均访问时间:若tc表示命中时的Cache访问时间,tm表示命中时的主存访问时间,1-h表示命中率,则Cache/主存系统的平均访问时间ta为 ta= h tc + (1 - h) tm 某计算机系统的内存储器由...弱符号 初始化的全局变量。 规则 不允许存在同名强符号。 如果强符号和弱符号同名,选择强符号。 如果弱符号同名,任意选择一个弱符号。

22320

微信手机端的本地数据全文检索优化之路

函数输入: Query:用户查找的关键词; 命中Doc:关键词所命中的文档。...最开始我尝试的方案是直接修改Offsets函数源码,发现FTS4对API的封装比较难使用,Offsets函数的依赖也比较多,修改出来的代码很难维护,可读性也不好,所以需要寻找新的方法来优化。...从搜索流程图中可以看出,微信最初采用的方案是在Java层统计个数和排序,此方法在大数据的情况下不可取。...得到会话conv1,conv2,conv3,然后执行以下SQL,可以分别得到三个会话的命中个数: ? 但是这种方法也存在问题,需要执行多条SQL。...“减肥”实战记录》 《iOS版微信安装包“减肥”实战记录》 《移动端IM实践:iOS版微信界面卡顿监测方案》 《微信“红包照片”背后的技术难题》 《移动端IM实践:iOS版微信小视频功能技术方案实录

2.6K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券