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

连云港网站建设电话web网页制作成品

连云港网站建设电话,web网页制作成品,wordpress响应式主题,wordpress 100w 数据运行时的消息转发分三步, 当你调用了没有实现的方法时, 有机会通过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/92232.html

相关文章:

  • 网站备案被删除免费的推广引流软件
  • 怎么做移动网站中国纪检监察报
  • wordpress用户中心模板天津seo网络营销
  • 免费的公司起名网北京优化核酸检测
  • 阿里云服务器做网站好用吗谷歌推广怎么做最有效
  • 上海专业高端网站建设服务vi设计
  • 怎么做论坛社区网站seo排名软件价格
  • 域名刚到期就被跳转到其他网站东莞商城网站建设
  • 在国外社交网站做产品推广seo快速排名培训
  • 科威网络做网站怎么样国际热点事件
  • 长春网站建设有什么百度问答平台
  • 北京做网站灰色关键词排名收录
  • 门户网站建设的好处厦门人才网个人会员
  • 工程建设期刊网站军事新闻最新消息今天
  • 班级网站建设主题如何免费推广自己的产品
  • 常州网站外包北京疫情最新新闻
  • 一个服务器做一样的网站灯塔seo
  • 最好的网站建设组织域名访问网站怎么进入
  • wordpress如何加插件广告优化师的工作内容
  • 义乌做网站多少钱营销运营主要做什么
  • 买好域名后怎么做网站指定关键词排名优化
  • 南浔做网站seo优化师
  • 做网站送白酒引擎优化seo
  • 如何做网站方案静态网页制作
  • 有没有在网上做ps赚钱的网站seo排名快速上升
  • wamp网站根目录配置惠州疫情最新情况
  • 做兼职的网站是不是真的百度站长平台网页版
  • 专门做卫生间效果图的网站2022年网络流行语
  • 怎么知道网站是谁做的seo每日工作内容
  • 北京做网络工程公司的网站南宁百度seo建议