当前位置: 首页 > wzjs >正文

焦作集团网站建设wordpress 模版 cho's

焦作集团网站建设,wordpress 模版 cho's,wordpress企业网站 教程,自动建站网站系统域名方法交换可以放在 load 或 initialize 方法中,也可以自己根据时机来空,比如开启某个开关后才需要交换方法。如果是在load中调用,交换工作会在类加载时(程序启动)自动调用;如果是在initialize中调用&#xf…

方法交换可以放在 +load+initialize 方法中,也可以自己根据时机来空,比如开启某个开关后才需要交换方法。如果是在+load中调用,交换工作会在类加载时(程序启动)自动调用;如果是在+initialize中调用,则会在该类初次发送消息的时候调用(如初始化、调用类方法等)。我们可以根据实际需要决定调用调用时机

实现交换

#import <objc/runtime.h>@implementation UIViewController (Swizzling)+ (void)load {// 获取原始的方法Method originalMethod = class_getInstanceMethod(self, @selector(viewWillAppear:));// 获取要交换的自定义实现方法Method swizzledMethod = class_getInstanceMethod(self, @selector(xxx_viewWillAppear:));// 交换方法BOOL didAddMethod = class_addMethod(self, @selector(viewWillAppear:), method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));if (didAddMethod) {// 如果方法添加成功,说明原来类没有实现 viewWillAppear,直接使用交换后的方法class_replaceMethod(self, @selector(xxx_viewWillAppear:), method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));} else {// 如果原有的方法已经实现,则交换两个方法的实现method_exchangeImplementations(originalMethod, swizzledMethod);}
}- (void)xxx_viewWillAppear:(BOOL)animated {// 在这里可以调用自己的实现[self xxx_viewWillAppear:animated]; // 注意:这里调用的是交换后的实现// 自定义代码,或者添加日志、调试等NSLog(@"viewWillAppear 被交换了!");
}@end

关键点

  • class_getInstanceMethod:用来获取类的实例方法。
  • method_exchangeImplementations:用来交换两个方法的实现。
  • class_addMethod:如果目标方法不存在,可以添加一个新的方法。
  • method_getImplementationmethod_getTypeEncoding:分别获取方法的实现和类型编码。

注意事项

  • 递归调用:在 xxx_viewWillAppear: 方法内部,我们使用了 self xxx_viewWillAppear:animated; 来避免递归调用自身。因为方法已经交换,这行代码会触发原始的 viewWillAppear: 方法调用。
  • 调用顺序:交换方法的顺序是非常重要的。在我们的例子中,我们在自定义方法中先执行了交换后的实现 (xxx_viewWillAppear:),然后再执行原始的 viewWillAppear:。这样可以确保自定义的行为不会丢失。

实际应用

此类应用比较多的就是数据统计,比如统计页面浏览、元素点击,通过方法交换植入监控程序,大大提高开发效率。


文章转载自:

http://CgXQIFJo.gpmrj.cn
http://MRzZ45Ht.gpmrj.cn
http://gChM0s8s.gpmrj.cn
http://Z7P2Q8sH.gpmrj.cn
http://Hi3PYd6d.gpmrj.cn
http://6Pk1Qbvh.gpmrj.cn
http://h79WyTx6.gpmrj.cn
http://yNpZh7Kq.gpmrj.cn
http://DlAjBc0n.gpmrj.cn
http://zYZmrnwj.gpmrj.cn
http://HlGaJAXW.gpmrj.cn
http://zwISUAPa.gpmrj.cn
http://ZkXQfFAy.gpmrj.cn
http://eZnlq76G.gpmrj.cn
http://wTegRiou.gpmrj.cn
http://8oNbto6b.gpmrj.cn
http://iP2WZ716.gpmrj.cn
http://6ptkbCQI.gpmrj.cn
http://t4tfsXgB.gpmrj.cn
http://6I3zi95f.gpmrj.cn
http://nUnw6zCi.gpmrj.cn
http://R4Df5a5t.gpmrj.cn
http://8tLe68CG.gpmrj.cn
http://bMEKyxBN.gpmrj.cn
http://v1LmPx0T.gpmrj.cn
http://E9gLFvHL.gpmrj.cn
http://KsFUkhRo.gpmrj.cn
http://WkoTi839.gpmrj.cn
http://JXZB9Mmh.gpmrj.cn
http://duqjpddM.gpmrj.cn
http://www.dtcms.com/wzjs/611841.html

相关文章:

  • 和网站设计人员谈价要注意什么淮安网站建设方案
  • 哪个网站建站好500平台八宝山做网站公司
  • 高端网站开发哪里好服务器安全加固方案
  • 做外贸的人经常逛的网站邵阳seo快速排名
  • 盐城网站建设找哪家好双语版网站怎么做
  • 二级院系网站建设用什么开源框架做网站
  • qq群推广用什么网站好为什么要创建网站
  • 网站建设的理念深圳做网站便宜
  • 网站建设与维护的试卷手机模板网站模板下载网站有哪些
  • 环保工程网站建设价格网络平台都有哪些
  • 泸友科技网站常见的电子商务网站推广方式
  • 网站建设制作宝塔面板做神马网站快速排
  • 网站开发前台怎么样设计一个电子商务网站建设方案
  • 网站字体颜色大小做网站接电话一般要会什么问题
  • 哪个大学的网站做的最好看网站开发之ios知识扩展
  • 提交谷歌网站广州冼村人很有钱吗
  • 地产网站开发宁波公司网站建设
  • 华东网站建设互联网网站开发创业计划书
  • 漳州正规网站建设哪家便宜网站内容布局
  • 盐城网站优化方案如何申请一个网站 新网
  • 跨越速运网站谁做的菠菜网站做首存
  • 大连做网站大公司企业员工培训课程有哪些
  • 长春专业企业网站建设价格贵阳网站建设优化
  • 杭州企业网站设计公司做钓鱼网站要具备什么
  • 淮安网站建设公司手机网站趋势
  • 做暧暧小视频网站简述营销型企业网站建设的内容
  • 网站建设整改情况汇报苏州能做网站
  • 国外有在线做设计方案的网站吗网上服务平台社保
  • 深圳免费网站优化网络推广wordpress多个标签
  • 旅游电子商务网站设计wordpress 好seo吗