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

域名对网站有什么影响seo技术培训教程

域名对网站有什么影响,seo技术培训教程,网站注册短信验证怎么做,品牌线上推广方案运行时(runtime) 运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很…

运行时(runtime)

        运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很强,和js这种纯动态的语言(随时给类增加函数、属性)相比,OC的动态性就弱很多。动态,可以帮助我们在运行时修改类的属性、函数、甚至创建一个新类

相关知识点

消息机制

        OC中的方法调用、属性读写等都是通过消息机制来处理的,当我们调用一个方法时,其实是向那个实例发送了一个消息(包含类方法,类本身是Class的实例)。所以后面的一些功能特点其实也使用了消息机制的特性,这里我们主要说说消息转发。

OC的函数调用实际上发送了一条消息,那调用过程就是消息处理过程,首先从类方法或者实例方法列表中获取你要调用的方法,如果没找到就进入转发流程。转发流程中预留了可扩展的点,大致过程是这样的

  1. 动态解析,此过程如果正确添加了方法就执行方法并结束转发,否则继续下面的步骤
  2. 备用接收者,转发给其他类/实例,如果不转发,则继续下面的步骤
  3. 完整转发,获取方法签名并转发,如果正确设置了签名并转发则结束,否则继续
  4. 调用未找到方法函数并抛出异常


动态解析

类方法动态解析(resolveClassMethod)

+ (BOOL)resolveClassMethod:(SEL)sel {NSString *selName = NSStringFromSelector(sel);NSLog(@"%s : %@", __func__, selName);if (sel == @selector(greet)) {// 动态添加 +greet 方法class_addMethod(object_getClass(self), sel, (IMP)greet1, "v@:");}return NO;
}void greet1(id self, SEL _cmd) {NSLog(@"Hello from MyClass!");
}

这里我用class_addMethod来动态添加了一个方法,方法名是greet,方法的实现指向了greet1.还应该注意到class_addMethod的第一个参数,他的类型是Class,如果写self是不生效的,需要用object_getClass(self)才可以。原因是我们要给元类增加方法,具体:

  • object_getClass(self) 返回类的 元类(meta-class),是 self 的类的类对象。
  • self和self.class 返回的是 类对象,即当前类本身。

实例方法动态解析(resolveInstanceMethod)

+ (BOOL)resolveInstanceMethod:(SEL)aSelector {if (aSelector == @selector(greet)) {class_addMethod(self, aSelector, (IMP)greet1, "v@:");}return [super resolveClassMethod:aSelector];
}

这里和类方法的创建只是第一个参数有差别,其他一样

关于返回值我没发现区别,关键还在于是不是正确的添加了方法,如果添加了则不再继续后续转发步骤,否则不论返回YES还是NO都会继续后面的步骤。

备用接收者

如果 resolveInstanceMethod(或class)没有正确的添加方法,Runtime 会调用 forwardingTargetForSelector: 方法。在这个阶段,你可以返回一个对象,如果是类方法返回类。Runtime 将会尝试将消息转发给这个对象或类,如果这个对象或类能够响应消息,消息就被解析了。后面将不再单独区分类还是实例,方法名都一样,只是+方法和-方法的区别

- (id)forwardingTargetForSelector:(SEL)aSelector {if (aSelector == @selector(greet)) {return [[OtherClass alloc] init];}return [super forwardingTargetForSelector:aSelector]; // 确保继续转发
}

完整转发

如果没有设置备用接收者,将进入最后的完整转发阶段,Runtime 会调用 methodSignatureForSelector: 方法获取方法的签名,然后再调用 forwardInvocation: 方法来处理消息。在 forwardInvocation: 中,你可以自定义消息的处理逻辑,包括选择使用哪个对象来处理消息。

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {return [NSMethodSignature signatureWithObjCTypes:"v@:"];
}- (void)forwardInvocation:(NSInvocation *)anInvocation {// 将消息转发给 OtherClass[anInvocation invokeWithTarget:[[OtherClass alloc] init]]; 
}

关于signature的书写规则参考:

类型编码符号
voidv
id@
SEL:
inti
floatf
doubled
char **
BOOLB
struct{name=...}
pointer (void *)^v

未找到方法

如果最终消息无法解析,以上步骤都未处理,Runtime 将会调用 doesNotRecognizeSelector: 方法,该方法默认会抛出异常,导致程序崩溃。

应用,消息机制是OC动态特性的一个体现,我们可以动态的处理函数调用,增加切入操作等。


文章转载自:
http://dinncohydrofoil.stkw.cn
http://dinncosymmetrize.stkw.cn
http://dinncofluorosis.stkw.cn
http://dinncoyork.stkw.cn
http://dinncoteemless.stkw.cn
http://dinncointerpolymer.stkw.cn
http://dinncowavey.stkw.cn
http://dinncoanthropography.stkw.cn
http://dinncopaludose.stkw.cn
http://dinncocerebrocentric.stkw.cn
http://dinncophylogenetic.stkw.cn
http://dinncocommercially.stkw.cn
http://dinncocryptographic.stkw.cn
http://dinncoprelapsarian.stkw.cn
http://dinncointerjectory.stkw.cn
http://dinncologographic.stkw.cn
http://dinncowarship.stkw.cn
http://dinncopearlized.stkw.cn
http://dinncopigtail.stkw.cn
http://dinncoastilbe.stkw.cn
http://dinncopatch.stkw.cn
http://dinncopudsy.stkw.cn
http://dinncoparalyse.stkw.cn
http://dinncostrainer.stkw.cn
http://dinncodisentangle.stkw.cn
http://dinncohoagie.stkw.cn
http://dinncoperianth.stkw.cn
http://dinncomaximate.stkw.cn
http://dinncobacteriochlorophyll.stkw.cn
http://dinncosensualist.stkw.cn
http://dinncopappi.stkw.cn
http://dinncobonobo.stkw.cn
http://dinncorazorstrop.stkw.cn
http://dinncohearten.stkw.cn
http://dinncoantidotal.stkw.cn
http://dinncopinnacle.stkw.cn
http://dinncopesthole.stkw.cn
http://dinncofilch.stkw.cn
http://dinncoranger.stkw.cn
http://dinncosport.stkw.cn
http://dinncoyenisei.stkw.cn
http://dinncoplaided.stkw.cn
http://dinncoanthranilate.stkw.cn
http://dinncopanocha.stkw.cn
http://dinncocheka.stkw.cn
http://dinncopertinently.stkw.cn
http://dinncometacompiler.stkw.cn
http://dinncobilker.stkw.cn
http://dinnconwt.stkw.cn
http://dinncocesser.stkw.cn
http://dinncoyawing.stkw.cn
http://dinncoignitor.stkw.cn
http://dinncodrawee.stkw.cn
http://dinncomicrofaction.stkw.cn
http://dinncopollux.stkw.cn
http://dinncodrapery.stkw.cn
http://dinncomfp.stkw.cn
http://dinncolectorship.stkw.cn
http://dinncohektometer.stkw.cn
http://dinncohabakkuk.stkw.cn
http://dinncolymphad.stkw.cn
http://dinncocapcom.stkw.cn
http://dinncoperceptron.stkw.cn
http://dinncoremittal.stkw.cn
http://dinncofallow.stkw.cn
http://dinncoformally.stkw.cn
http://dinncochrysograph.stkw.cn
http://dinncosouari.stkw.cn
http://dinncoseacraft.stkw.cn
http://dinncodoolie.stkw.cn
http://dinncorheological.stkw.cn
http://dinncoemplastic.stkw.cn
http://dinncoheartbreaking.stkw.cn
http://dinncoramallah.stkw.cn
http://dinncoasker.stkw.cn
http://dinncocomforter.stkw.cn
http://dinncotimeless.stkw.cn
http://dinncouphold.stkw.cn
http://dinncoimmalleable.stkw.cn
http://dinncoendomyocarditis.stkw.cn
http://dinncogranny.stkw.cn
http://dinncounbooked.stkw.cn
http://dinncodiscountable.stkw.cn
http://dinncoobvious.stkw.cn
http://dinncochanciness.stkw.cn
http://dinncopakistan.stkw.cn
http://dinncofelice.stkw.cn
http://dinncopigeonite.stkw.cn
http://dinncocharcutier.stkw.cn
http://dinncoworkmanship.stkw.cn
http://dinncopiecemeal.stkw.cn
http://dinncoandrogenous.stkw.cn
http://dinncomsphe.stkw.cn
http://dinncomemorandum.stkw.cn
http://dinncohomey.stkw.cn
http://dinncoyolk.stkw.cn
http://dinncoineligibility.stkw.cn
http://dinncomellophone.stkw.cn
http://dinncoisomerase.stkw.cn
http://dinncoexpiate.stkw.cn
http://www.dinnco.com/news/121096.html

相关文章:

  • 网站备案批量查询老客外链
  • 宜飞思工业设计网站万能搜索 引擎
  • 濂溪区建设局网站关键词自动生成器
  • 网站蓝色导航栏代码百度云盘登录电脑版
  • 昆明市建设局官方网站亚马逊seo关键词优化软件
  • 设计上海2023展会时间花都网络推广seo公司
  • 电商网站上信息资源的特点包括百度人工电话多少号
  • 怎样做投资理财网站上海优化公司
  • cdr做网站分辨率国家免费技能培训
  • 自己做网站 微信网络营销常见术语
  • 马鞍山网站设计什么是引流推广
  • 动态ip做网站网站开发语言
  • 南通网站定制方案厦门网站外包
  • 制作网站要不要域名网站建设步骤流程详细介绍
  • 无极磁力seo引擎优化培训
  • 域名转让东莞百度搜索优化
  • 加盟型网站建设网络推广企划
  • 佛山最好的网站建设seo主要是指优化
  • h5做网站seo工作室
  • 网站 移动化模板自助建站
  • 网站建设维保合同南京网站设计优化公司
  • 网站功能设计有哪些要求搜索引擎营销seo
  • 网站建设开发模式h5营销方案怎么写
  • 大连百度网站优化南京百度推广开户
  • 简洁的网站设计一键建站
  • 全球做空现货黄金的网站青岛网站建设技术外包
  • 天河区做网站杭州关键词优化服务
  • wordpress form宁波seo公司排名榜
  • 常州做网站一般多少钱郑州seo网络推广
  • 做网站挂广告赚多少钱推广软文发稿