如何使用Method Swizzle实现友盟统计
来源:互联网 发布:微信群管理机器人软件 编辑:程序博客网 时间:2024/06/05 05:28
1.什么是Method Swizzle(黑魔法)
从字面意思上看,就是方法混淆的意思。大家对它的理解性定义为:改变一个已存在的选择器对应的实现的过程,它依赖于Objectvie-C中方法的调用能够在运行时进改变——通过改变类的调度表(dispatch table)中选择器到最终函数间的映射关系。
实际上它是通过指针调换的方式,将某个类的方法A对应的指针指向我们自己写的一个方法B,将我们自己写的方法B对应的指针指向方法A,看看下面图的图示:
2.友盟统计实例
已下是实现友盟统计的具体实现,这里可以根据需求过滤掉一下类的统计
这里用到一个已经比较成熟的第三方JRSwizzle,当然自己写也可以,没几行代码
#import "UIViewController+WJSwizzle.h"#import "JRSwizzle.h"#import "MobClick.h"@implementation UIViewController (WJSwizzle)+ (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSError *err1 = nil,*err2 = nil; [self jr_swizzleMethod:@selector(viewDidAppear:) withMethod:@selector(swizzle_viewDidAppear:) error:&err1]; [self jr_swizzleMethod:@selector(viewDidDisappear:) withMethod:@selector(swizzle_viewDidDisappear:) error:&err2]; if (err1) NSLog(@"页面统计发生错误(%@):%@", [self description], err1.localizedDescription); if (err2) NSLog(@"页面统计发生错误(%@):%@", [self description], err2.localizedDescription); });}- (void)swizzle_viewDidAppear:(BOOL)animated { [MobClick beginLogPageView:[self.class description]]; [self swizzle_viewDidAppear:animated];}- (void)swizzle_viewDidDisappear:(BOOL)animated { [MobClick endLogPageView:[self.class description]]; [self swizzle_viewDidDisappear:animated];}@end
1 0
- 如何使用Method Swizzle实现友盟统计
- method swizzle
- swizzle method
- Objective-C 【Method Swizzle】
- Method Swizzle监听系统方法
- Method Swizzle可参考文章,黑魔法
- iOS笔记 runtime Method Swizzle 方法交换//
- C++ Vector属性Swizzle实现
- IOS 页面统计 SWIZZLE 的简单应用
- Method Swizzle黑魔法,修改 ios 系统类库方法
- iOS开发-黑魔法 method swizzle(一)
- Objective-C Runtime 解析(三)—— swizzle method
- 通过swizzle method分类已有方法扩展
- 转 Objective-C Method Swizzling 友盟统计
- IOS使用 swizzle 解决一些错误
- IOS使用 swizzle 解决一些错误
- 如何使用友盟统计(自定义事件)
- 如何使用友盟统计(自定义事件)
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- hdu1426&3111 数独问题
- 如何做系列(5)-james mail安装总结
- 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)
- 城市间紧急救援
- 如何使用Method Swizzle实现友盟统计
- 获取中文字符串的拼音
- 损失函数(Loss Function) -1
- Android.mk详解
- hdu 2201 熊猫阿波的故事
- Windows的隐藏分区
- 【BZOJ】1006 神奇的国度
- fwrite,fflush,你不知道的事!
- Win7使用SecureCRT远程访问Ubuntu14.04