首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
swizzling专题
iOS 小技能:Method Swizzling (交换方法的IMP)
文章目录 前言I Method Swizzling基础1.1 字符串驻留1.2 Objective-C的hook方案1.3 Method swizzling的时机1.4 initialize1.5 对象关联(动态添加实例变量)1.6 其他相关方法 II 例子2.1 使用method_exchangeImplementations 方法实现交换的简单例子2.2 让所有继承自NSObject的子
阅读更多...
iOS ------ Method Swizzling (动态方法交换)
一,Method Swizzling 简介 Method(方法)对应的是objc_method结构体;而objc_method结构体中包含了SEL method_name(方法名),IMP method_imp(方法实现) // objc_method 结构体typedef struct objc_method *Method;struct objc_method {SEL _Nonnull
阅读更多...
iOS开发 Method Swizzling 方法替换
关于Method Swizzling,有位大神介绍的很详细了,地址:Objective-C的hook方案(一): Method Swizzling 其实呢,菜逼一个的我不怎么懂,就把我项目中用到的贴上来吧: 代码:(写在NSObject的类别里 需要引入#import <objc/runtime.h>) @implementation NSObject (Swizzle)+ (void)
阅读更多...
iOS动态性(二)可复用而且高度解耦的用户统计埋点实现(Method Swizzling(Hook))
用户统计.jpeg 用户行为统计(User Behavior Statistics, UBS)一直是移动互联网产品中必不可少的环节,也俗称埋点。在保证移动端流量不会受较大影响的前提下,PM们总是希望埋点覆盖面越广越好。目前常规的做法是将埋点代码封装成工具类,但凡工程中需要埋点(如点击事件、页面跳转)的地方都插入埋点代码。一旦项目越来越复杂,你会发现埋点的代码散落在程序的各个角
阅读更多...
Method Swizzling、AOP 面向切片编程
对 App 的用户行为进行追踪和分析。简单说,就是当用户看到某个 View 或者点击某个 Button 的时候,就把这个事件记下来。 手动添加 最直接粗暴的方式就是在每个 viewDidAppear 里添加记录事件的代码。 1 2 3 4 5 6 7 8 9 10 11 @implementation MyViewController () -
阅读更多...
iOS运行时以及HOOK的理解:runtime和method swizzling
1. iOS runtime理解 runtime为hook提供基础 2. ios runtime浅析(三):Method Swizzling (1)典型的应用就是,修改系统方法的实现: category + runtime 举个例子,比如你想记录一个iOS应用里每个view controller显示的次数:可以在每个view controller添加记录的代码,但这会导致大量的重复代码;
阅读更多...