iOS进阶:【UITableView控件$AppClick事件全埋点】(使用Method Swizzling交换tableView:didSelectRowAtIndexPath进行实现)

前言

关于实现UITableView和UICollectionView控件$AppClick事件的全埋点,常见的方案有三种。
·方法交换
·动态子类
·消息转发

方案一:方法交换

  • 使用Method Swizzling交换UITableView的-setDelegate:方法;
  • 然后,获取实现UITableViewDelegate协议的delegate对象,在得到delegate对象之后,交换delegate对象的-tableView:didSelectRowAtIndexPath:方法;(在UITableView+SensorsData.m文件中新增一个私有方法,负责给delegate对象添加一个方法并进行交换)
  • 最后,在交换后的方法中触发AppClick事件,从而实现UITableView控件AppClick事件全埋点。

UITableView的delegate对象是在程序运行时设置的,其有可能是UITableView对象本身,也有可能是UIViewController或其他对象。
因此,我们只能动态地给delegate对象添加需要交换的方法,然后与原来的-tableView:didSelectRow-AtIndexPath:方法进行交换(class_addMethod函数,该函数可以在程序运行时给一个类动态地添加方法。)

    // 方案一:方法交换
//    // 调用原始的设置代理的方法
//    [self sensorsdata_setDelegate:delegate];
//    // 交换 d

你可能感兴趣的:(iOS,进阶,iOSAutoTrack)