首页
学习
活动
专区
工具
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.

4K20

【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 正常方法调用 | 方法委托实现 | 代码示例 )

文章目录 一、方法委托 1、正常方法调用 2、方法委托实现 二、完整代码示例 一、方法委托 ---- 1、正常方法调用 定义两个类 , 分别在类中定义不同的方法 ; class Student1{...) sm.student2.hello2() 2、方法委托实现 在 StudentManager 对象中, 如果通过该对象 , 调用 Student1 中的方法 hello1 , 而发现该对象没有该 hello1...方法 , 那么将方法委托给 Student1 对象执行 ; 方法委托实现 : 为 StudentManager 对象注入方法 , 如果当前调用的是 hello1 方法 , 则执行 student1 的..., 需要经过两个调用节点; sm.student1.hello1() sm.student2.hello2() // 方法委托, 直接通过 StudentManager 对象调用 Student1...中的方法 sm.hello1() // 方法委托, 直接通过 StudentManager 对象调用 Student2 中的方法 sm.hello2() /* 方法委托 : 如果调用的某个对象方法没有定义该对象

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

    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.4K40

    iOS runtime方法调用与消息转发

    导语: iOS runtime为开发者提供了很多灵活便捷的方法,使得在运行时也可以改变类的结构。这篇文章主要是从方法调用作为切入点,来学习&记录runtime的理论知识。...一、方法调用 在OC中,运行时贯穿了整个工程的运行过程,每一个方法的调用都离不开运行时的工作。...在讨论OC时,我们经常说 向对象“发消息” 而不是“调用”,原因就在于在整个程序运行过程中,每一次实际上所调用的方法并不是已经完全绑定好的,编译器会把OC方法的调用,转换成objc_msgsend函数,...二、消息转发 当OC找不到代码中调用的方法时,在crash之前我们还有机会通过重写以下NSObject的四个方法来进行处理: //当调用一个不存在的类方法时调用 + (BOOL)resolveClassMethod...:(SEL)sel; //当调用一个不存在的实例方法时调用 + (BOOL)resolveInstanceMethod:(SEL)sel; //将这个不存在的方法重定向到其它类处理,需要返回一个实例

    2K90

    【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 批量方法委托 )

    文章目录 一、批量方法委托 二、完整代码示例 一、批量方法委托 ---- 在上一篇博客 【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 正常方法调用 | 方法委托实现 | 代码示例 ) 中..., 将 StudentManager 对象的方法委托给了其内部的 student1 和 student2 成员 , 在 methodMissing 方法中进行方法委托 , 需要使用 student.respondsTo...{ // 代码块中调用 delegate 方法 , 传入要委托的类 delegate(Student1, Student2) } /** *..., 直接通过 StudentManager 对象调用 Student1 中的方法 sm.hello1() // 方法委托, 直接通过 StudentManager 对象调用 Student2 中的方法...sm.hello2() /* 方法委托 : 如果调用的某个对象方法没有定义该对象 , 则可以将该方法委托给内部对象执行 */ 执行结果 : hello1 hello2

    17020

    静态拦截iOS对象方法调用的简易实现

    所有方案中都需要事先统计所有的函数调用情况,并根据函数调用的频次来进行代码的重排。 这些函数调用中,OC对象的方法调用最多。...统计OC对象的方法调用可以在运行时通过第三方库比如fishhook来Hook所有objc_msgSend调用来实现,也可以在编译后链接前通过静态插桩的方式来实现Hook拦截。...很多对objc_msgSend进行Hook的实现其实是不完整的,因此如果想完全掌握函数调用ABI规则的话请参考:《深入iOS系统底层之函数调用》 2....无论用何种方法实现,你都需要首先了解一下静态库.a的文件结构。你可以从:《深入iOS系统底层之静态库》一文中掌握到一个静态库文件的组成结构。...---- 采用本文中所介绍的静态Hook方法的好处是我们不必Hook所有的OC方法调用,而是可以有选择的进行特定对象和类的方法调用拦截。

    1.8K30

    预防委托调用(DELEGATECALL)引起的合约漏洞

    与call不同,用DELEGATECALL进行函数调用时,其代码是在当前调用函数的环境里执行,因此,构建无漏洞自定义库并不像想象的那么简单。...你可能也注意到了,FibonacciBalance合约中的 fallback 函数会把所有调用委托传递给库合约,这让库合约的setStart函数也可以被调用。...调用了setFibonacci函数,修改了存储slot[1],当前是calculatedFibNumber(即,在执行后,calculatedFibNumber已经被修改了)。...之后,任何时候,当用户调用withdraw或者 fallback 函数时,恶意合约就会执行,并盗取合约的全部余额。...constant _walletLibrary = 0xcafecafecafecafecafecafecafecafecafecafe; } -Wallet.sol- 请注意,Wallet合约通过一个委托调用将所有调用传递给

    84520

    【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )

    文章目录 一、使用 @Delegate 注解进行方法委托 二、完整代码示例 一、使用 @Delegate 注解进行方法委托 ---- 在博客 【Groovy】MOP 元对象协议与元编程 ( 方法委托 |...正常方法调用 | 方法委托实现 | 代码示例 ) 【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 批量方法委托 ) 中 , 都是通过手动方式实现了方法委托 , Groovy 中提供了 @...方法 , 此时就会自动进行方法委托 , 调用 student1 对象的 hello1 方法 ; 二、完整代码示例 ---- 完整代码示例 : class Student1{ def hello1..., 直接通过 StudentManager 对象调用 Student1 中的方法 sm.hello1() // 方法委托, 直接通过 StudentManager 对象调用 Student2 中的方法...sm.hello2() /* 方法委托 : 如果调用的某个对象方法没有定义该对象 , 则可以将该方法委托给内部对象执行 */ 执行结果 : hello1 hello2

    44120

    委托实现方法学习总结

    (1)     委托声明(定义一个函数原型:返回值+参数类型和个数)            注:在类的外部声明——中介(房产中介商) (2)     根据委托定义“具体”的方法——————房源   注:...在同一类中定义方法 (3)     创建委托对象,关联“具体方法”后实例化———中介商拥有房源  注意:在主函数中操作       对象中含有多个方法列表 (4)     通过委托去调用方法(而不是直接调用方法...)——————中介带人看房 (5)     委托对象所关联的方法可以动态变化——————看房成功或者失败  (-:解除关联,+:添加关联)   多播委托。 ...+=:按顺序添加到方法列表  —=:从方法列表尾部去除一个完全匹配的方法。 例子: ? 通信从窗体---》主窗体: ? 通信主窗体---》从窗体: ?

    35530

    开心档之C# 匿名方法我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。 匿名方法(Anonymou

    C# 匿名方法我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。...委托可以通过匿名方法调用,也可以通过命名方法调用,即,通过向委托对象传递方法参数。注意: 匿名方法的主体后面需要一个 ;。...NumberChanger nc = delegate(int x){Console.WriteLine("Anonymous Method: {0}", x);};// 使用匿名方法调用委托nc(10...);// 使用命名方法实例化委托nc = new NumberChanger(AddNum);// 使用命名方法调用委托nc(5);// 使用另一个命名方法实例化委托nc = new NumberChanger...(MultNum);// 使用命名方法调用委托nc(2);Console.ReadKey();}}}当上面的代码被编译和执行时,它会产生下列结果:Anonymous Method: 10Named Method

    82720

    TypeError:未绑定方法

    TypeError: unbound method 错误通常发生在类方法被调用时,但没有正确绑定到实例。这通常意味着你试图在类本身上调用一个实例方法,或者没有使用正确的方式创建类实例。...2、解决方案:有两种解决方案:方法1: 在 tokenize() 函数中,每当遇到一个非数字的运算符时,不直接生成一个 symbol 类,而是生成一个 symbol() 的实例。...方法2: 使用 types.MethodType 函数将 infix_led 函数绑定到 symbol 类的实例上。...如果你遇到 TypeError: unbound method 错误,请确保你正确地实例化类,并通过实例调用方法。...如果确实需要通过类调用方法,请使用 @classmethod 或 @staticmethod 装饰器。希望这个解释和解决方案对你有所帮助。

    9510

    C#委托四(匿名方法)

    什么是匿名方法? 匿名方法是C#2.0引入的一个新特性,它允许开发者声明自己的函数代码而无须使用委托函数。...C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称,匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。...也不能在匿名方法外部使用的ref和out参数。 通过使用匿名方法,可以不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。...例如,如果创建方法所需的系统开销是不必要的,则指定代码块(而不是委托)可能非常有用。...); md(Test); Console.Read(); } }   通过上面代码可以看到,上面是通过委托实现方法调用的

    44320

    关于C#委托三种调用的分享

    * 答:Invoke方法的参数很简单,一个委托,一个参数表(可选), 而Invoke方法的主要功能就是帮助你在UI线程上调用委托所指定的方法。...Invoke方法首先检查发出调用的线程(即当前线程)是不是UI线程, 如果是,直接执行委托指向的方法,如果不是,它将切换到UI线程, 然后执行委托指向的方法。...不管当前线程是不是UI线程, Invoke都阻塞直到委托指向的方法执行完毕,然后切换回发出调用的 线程(如果需要的话),返回。 所以Invoke方法的参数和返回值和调用他的委托应该是一致的。...二、异步调用 1、异步调用不阻塞线程,而是把调用塞到线程池中, 2、程序主线程或UI线程可以继续执行。 3、委托的异步调用通过BeginInvoke和EndInvoke来实现。...ok,三种委托调用的分享就到这里了,有疑问的欢迎指正!

    75120

    dotnet C# 调用委托的 GetInvocationList 的对象分配

    本文也叫跟着 Stephen Toub 大佬学性能优化系列,这是我从 Stephen Toub 大佬给 WPF 框架做性能优化学到的知识,在热路径下,也就是频繁调用的模块,如果调用了委托的 GetInvocationList...方法,那么将视委托的大小,每次创建不同大小的新数组对象,而在频繁调用的模块,将会创建大量的对象 如以下代码的一个委托,当然对于事件来说也是如此 Action action =...action 的 GetInvocationList 方法,那么在每次调用都会申请一些内存,如使用以下代码进行测试 for (int i = 0; i 调用频繁的模块里面,不断调用 GetInvocationList 方法,将会有一定的性能损耗。...如在 WPF 的移动鼠标等逻辑里面 一个优化的方法是,如果指定的委托或事件的加等次数比调用 GetInvocationList 的次数少,如 WPF 的 PreNotifyInput 等事件,此时可以通过在加等的时候缓存起来

    65030
    领券