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

连云港网站建设电话semester at sea

连云港网站建设电话,semester at sea,新疆建设网查询中心,做本地分类信息网站赚钱吗运行时的消息转发分三步, 当你调用了没有实现的方法时, 有机会通过runtime的消息转发机制补救一下 resolveInstanceMethod/resolveClassMethod 这里可以动态去创建方法来解决CrashforwardingTargetForSelector ​​​​​第一步未解决, 就会走到这里, 可以给出一个Target去转发…

运行时的消息转发分三步, 当你调用了没有实现的方法时, 有机会通过runtime的消息转发机制补救一下

  1. resolveInstanceMethod/resolveClassMethod 这里可以动态去创建方法来解决Crash
  2. forwardingTargetForSelector ​​​​​第一步未解决, 就会走到这里, 可以给出一个Target去转发这个消息(方法调用)
  3. forwardInvocation ​​​​​​​上面2步都没有解决问题, 这里是最后一次机会, 利用methodSignatureForSelector返回一个方法签名, 在forwardInvocation中转发给对应的target

实例方法实现参考

+ (BOOL)resolveInstanceMethod:(SEL)sel {if (sel == @selector(testInstance)) {IMP imp = class_getMethodImplementation([self class], @selector(test));return class_addMethod([self class], sel, imp, "v@:");}return NO;
}- (id)forwardingTargetForSelector:(SEL)aSelector {if (aSelector == @selector(testInstance)) {return self.realObj;}return [super forwardingTargetForSelector:aSelector];
}- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {if (aSelector == @selector(testInstance)) {return [[RealTestObject alloc] methodSignatureForSelector:aSelector];}return [super methodSignatureForSelector: aSelector];
}- (void)forwardInvocation:(NSInvocation *)anInvocation {SEL sel = anInvocation.selector;if ([self.realObj respondsToSelector:sel]) {[anInvocation invokeWithTarget:self.realObj];return;}[super forwardInvocation:anInvocation];
}

类方法实现参考

+ (BOOL)resolveClassMethod:(SEL)sel {if (sel == @selector(testClass)) {
//也可以通过block创建一个IMP去替代方法实现
//        IMP imp = imp_implementationWithBlock(^(void) {
//            NSLog(@"imp_implementationWithBlock");
//        });IMP imp = class_getMethodImplementation(objc_getMetaClass("TestObject"), @selector(testLogClass));class_addMethod(objc_getMetaClass("TestObject"), sel, imp, "v@:");return YES;}return NO;
}+ (id)forwardingTargetForSelector:(SEL)aSelector {if (aSelector == @selector(testClass)) {return [RealTestObject class];}return [super forwardingTargetForSelector:aSelector];
}+ (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {if (aSelector == @selector(testClass)) {return [RealTestObject methodSignatureForSelector:aSelector];}return [super methodSignatureForSelector:aSelector];
}+ (void)forwardInvocation:(NSInvocation *)anInvocation {SEL sel = anInvocation.selector;if (sel == @selector(testClass)) {[anInvocation invokeWithTarget:[RealTestObject class]];return;}[super forwardInvocation:anInvocation];
}

http://www.dtcms.com/wzjs/363697.html

相关文章:

  • html5购物网站网络营销推广服务商
  • 保定专业做网站软文推广页面
  • 汽车手机网站制作seo优化大公司排名
  • discuz论坛网站做的门户衡水seo优化
  • 蚌埠网站关键词优化百度手机助手最新版下载
  • 网站制作简单协议品牌推广内容
  • 德宏网站建设360浏览器网页版入口
  • 自己做网站统计公司主页网站设计
  • 网站单独页面怎么做301重定向优化seo设置
  • 我要学做网站关键词分为哪三类
  • wordpress怎么盈利百度官方优化指南
  • 北京著名网站设计公司市场营销四大分析方法
  • 怎么查询别人的网站是独立ip还是共享ip上海关键词优化的技巧
  • 帮你做决定的网站东莞整站优化排名
  • wordpress设置缓存北京seo公司司
  • 网站制作企优化系统的软件
  • wordpress做新闻网站上海关键词优化排名软件
  • 商业网站开发设计报告seo技术培训广东
  • asp.net c 网站开发网络推广的细节
  • 网站建设便宜苏州百度搜索排名优化
  • 在网络上做兼职的网站做seo要投入什么
  • wordpress开启ssl变慢seo建站是什么意思
  • 海口建设网站的公司互联网营销策划方案
  • 网站的佣金怎么做会计分录西安优化网站公司
  • 网站如何开通微信支付接口免费的拓客平台有哪些
  • 住房和城乡建设部网站bim百度软件应用市场
  • 海原电商网站建设网络舆情监测系统软件
  • 手机网页版传奇关键词优化网站排名
  • 柳州网站建设工作室广告公司业务推广
  • 网站建设域名什么意思百度搜索指数排行榜