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

怎样建设游戏网站wordpress中间页跳转插件

怎样建设游戏网站,wordpress中间页跳转插件,网站关键词推广哪家好,2022网络热词30个前言 这个归根结底还是在考察我们对isa走向图和类的继承的理解#xff0c;也就是苹果官方这幅图#xff1a; 接下来的函数调用流程请参考这张图。 1 isKindOfClass方法 1.1 objc_opt_isKindOfClass C函数 查看源码可发现#xff0c;无论是谁调用isKindOfClass方法都会…前言 这个归根结底还是在考察我们对isa走向图和类的继承的理解也就是苹果官方这幅图 接下来的函数调用流程请参考这张图。 1 isKindOfClass方法 1.1 objc_opt_isKindOfClass C函数 查看源码可发现无论是谁调用isKindOfClass方法都会进入这个C函数。这个C函数位于NSObjective.mm // Calls [obj isKindOfClass] // 当obj调用isKindOfClass时objc_opt_isKindOfClass会被触发 // obj是一个id类型id是一个objc_object结构体指针意味着传进来的可以是时类也可以是类的实例对象 // otherClass就是isKindOfClass的参数我们当初传进去的cls BOOL objc_opt_isKindOfClass(id obj, Class otherClass) { #if __OBJC2__if (slowpath(!obj)) return NO;Class cls obj-getIsa(); // 此处的cls仅是obj的第一个isaif (fastpath(!cls-hasCustomCore())) {// otherClass 从obj的ISA开始依次和ISA的父类比较直到找到或者父类为nil结束// 当父类为nil意味着最后一个和otherClass比较的是NSObject根类。for (Class tcls cls; tcls; tcls tcls-superclass) {if (tcls otherClass) return YES;}return NO;} #endifreturn ((BOOL(*)(id, SEL, Class))objc_msgSend)(obj, selector(isKindOfClass:), otherClass); }可知 一切皆从调用者obj的isa开始然后顺着superclass走下去直到找到cls或superclass为nil结束。当superclass为nil意味着最后的根类NSObject也不是cls返回flase。 1.2 类SubClass调用 (BOOL)isKinsOfClass:(Class)cls 流程 从类的isa——元类开始判断它不是cls如果是返回true如果不是继续用元类的superclass和cls比较看是不是cls直到根类NSObject也比较完。 判断顺序 SubClass与 MetaClass-MetaClass-...-RootMetaClass-NSObject。 总结 判断cls是不是 元类-父类的元类-父父类的元类-…-根元类-NSObject 元类的superclass继承链其中一个。cls 传除NSObject.class外的任意类对象均为false。 1.3 元类MetaClass 调用 (BOOL)isKinsOfClass:(Class)cls 流程 MetaClass 的ISA 指向 RootMetaClass ,所以从 RootMetaClass 开始比较判断是不是我们传入的cls如果不是再看根类NSObject是不是如果NSObject也不是就彻底没有了返回false。 判断顺序MetaClass 与 RootMetaClass-NSObject。 总结 判断cls是不是 根元类-NSObject 中的任意一个。 1.4 对象obj 调用- (BOOL)isKinsOfClass:(Class)cls 流程 从isa指向的类对象开始判断是不是cls如果不是看类对象的父类逐级判断是不是cls直到找到返回true或者判断到NSObject依然不是返回false结束。 判断顺序 object 与 SubClass - SubClass -...-NSObject。 总结 判断cls是不是 类对象-父类-…-NSObject superclass继承链其中一个。 2 isMemberOfClass 2.1 类对象SubClass调用 (BOOL)isMemberOfClass 源码 (BOOL)isMemberOfClass:(Class)cls {return self-ISA() cls; }不用像isKindOfClass循环直到找到或nil他只要比较cls是不是我当前的isa指向是返回true不是返回false。 判断SubClass与MetaClass。 2.2 元类MetaClass 调用 (BOOL)isMemberOfClass 因为元类的isa只指向根元类NSObejct 所以除了NSObject的类SubClass以外传入任何类对象也都是false。 验证传入NSObject的类SubClass的结果 void demo(void) { // BOOL re1 [[NSObject class] isKindOfClass:[NSObject class]];Class rootMetaClass object_getClass([NSObject class]);NSLog(%d, [[NSObject class] isMemberOfClass:rootMetaClass]); }结果 2.3 对象obj调用 -(BOOL)isMemberofClass:(Class)clss - (BOOL)isMemberOfClass:(Class)cls 底层源码: - (BOOL)isMemberOfClass:(Class)cls {return [self class] cls; } - (Class)class {return object_getClass(self); // 获取当前的isa指向的类 }只要判断对象的isa也就是图中的SubClass是不是我们传入的cls。 3. 测试 void demo(void) {BOOL f1 [(id)[NSObject class] isKindOfClass:[NSObject class]];BOOL f2 [(id)[MyClass class] isKindOfClass:[MyClass class]];BOOL f3 [(id)[MySuperClass class] isKindOfClass:[MySuperClass class]];BOOL f4 [(id)[MyClass class] isKindOfClass:[MySuperClass class]];BOOL f5 [(id)[NSObject alloc] isKindOfClass:[NSObject class]];BOOL f6 [(id)[MyClass alloc] isKindOfClass:[NSObject class]];BOOL f7 [(id)[MySuperClass alloc] isKindOfClass:[NSObject class]];NSLog(NSObjectClass ISKindOf NSObjectClass:%d, f1);NSLog(MyClassClass ISKindOf MyClassClass:%d, f2);NSLog(MySuperClassClass ISKindOf MySuperCassClass:%d, f3);NSLog(MyClassClass ISKindOf MySuperClassClass:%d, f4);NSLog(NSObjectObj ISKindOf NSObjectClass:%d, f5);NSLog(MyClassObj ISKindOf NSObjectClass:%d, f6);NSLog(MySuperClassObj ISKindOf NSObjectClass:%d, f7);}测试结果
http://www.dnsts.com.cn/news/94418.html

相关文章:

  • 2008iis网站建设苏州新闻最新消息今天
  • 如何仿做别人的网站义乌市评建设职称网站
  • 广州澄网站建设公司怎样暂停域名指向网站
  • 北仑建网站价格手机百度 网站提交
  • 营销型网站四大元素网站添加新闻
  • wordpress404设置三门峡网站seo
  • 常州网站建设最易沙井网站开发
  • 网站建设财务上做什么费用怎样让网站优化的方式
  • 网站栏目类型权威的建筑工程网站
  • 公司架设网站费用怎么做分录梅州网
  • 昊杰南宫网站建设微信号商城平台
  • 宣威网站建设公司百度一下你就知道了 官网
  • 电商网站优化方案网站空间地址查询
  • 淮安网站建设 淮安网站制作关于科技园区建设文章的网站
  • .net 网站制作网站建设计无形资产
  • 做的美食视频网站网站营销推广
  • 红色网站主题建设银行网站注册用户
  • 网站建设中 html5 源码app开发开发公司
  • 怎么在手机上做企业网站购物网站建设优势
  • 红酒网站建设方案淮北论坛最新招聘
  • 网站哪里可以查到做ddos360网页怎么制作
  • 哈尔滨阿城网站建设二手交易网站开发系统
  • 路由器设置手机网站打不开免费申请激活码
  • 网站建设的扩展阶段包括唐山市丰润区城乡建设局网站
  • 生小孩去什么网站做登记旧金山互联网公司排名
  • 学校的网站怎么做的广告页面制作
  • 专业开发网站设计德州市建设街小学网站
  • 建设一个网站app需要多少钱h5建站免费
  • 手机网站图片 触摸 放大代码 js网站设计与网页配色
  • 简单的网站后台管理系统昆明网站排名优化公司