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

电子商务网站建设参考文献书籍百度app推广

电子商务网站建设参考文献书籍,百度app推广,企业网站开发 宁波网络公司,广州网络公司有哪些故事背景:大厂面试,又问道了基本的kvc kvo的原理和使用,由于转了前端,除了个setter和getter,我全忘记了,其实还是没有理解记忆,下面再看一下kvc 和kvo ,总结一个让人通过理解而无法忘记的方法&a…

故事背景:大厂面试,又问道了基本的kvc kvo的原理和使用,由于转了前端,除了个setter和getter,我全忘记了,其实还是没有理解记忆,下面再看一下kvc 和kvo ,总结一个让人通过理解而无法忘记的方法: 

---------------------------KVC---------------------------------

(注意:所谓聊一下:kvc 的机制,就是kvc的定义+使用方法,及该方法的原理) 

KVC定义:(Key-value coding) 从名字就能看出,kvc的意思就是:键-值 编码,是一种访问某个对象属性的方法 或者叫一种模式;
 1. 使用详解:通常情况下我们会应用点语法(xxx.name)来访问一个对象中的属性。通过KVC,我们可以只使用属性名字的字符串,(可以是你自己定义的名字,也就是键)来间接访问和操作对象的属性,就是所谓的各种 :setValue:(你想操作的值) forKey:(你定义的名字-键) 方法,但其实在KVC的底层实现中,还是会调用相应属性的存取方法,如果对应的存取方法存在的话。同时,利用KVC可以访问对象中的私有变量,而不仅仅是公开的属性。在NSKeyValueCoding.h的头文件中可以看到相应的方法声明。
2.KVC的设置变量值的搜索模式:(使用原理)

(1)首先会搜索对应属性名称的存取方法,也就是setter以及getter方法,如果有就直接调用存取方法。

(2)如果要访问的变量没有存取方法,也就是setter以及getter方法,(例如私有的实例变量或者没有自动生成存取方法的属性值),那么会首先检查类方法检查类方法:+ (BOOL)accessInstanceVariablesDirectly,如果该类方法返回Yes,就会按照名称顺序:_key、_isKey、key、isKey来搜索实例变量;如果该类方法返回NO,就会调用setValue:forUndefinedKey: 或者 valueForUndefinedKey:的方法。

3.KVC 与点语法比较:

用点语法编译器会做预编译检查,访问不存在的属性编译器会报错,但是用 KVC 方式编译器无法做检查, 如果有错误只能运行的时候才能发现。相比点语法用 KVC 方式 KVC 的效率会稍低一点,但是较为灵活,可以在程序运行时决定访问哪些属性,并且用 KVC 可以访问对象的私有成员变量,访问速度方面,通过点语法访问变量比使用KVC访问变量要快,因为点语法是直接访问存取方法,没有响应复杂的搜索机制。

---------------------------KVO---------------------------------

(注意:所谓kvo 的机制,也同样就是kvo是什么  ,它的使用方法 addObserve:self forkeypath:"你定义的键名称",及该方法的原理) 

什么是KVO?

KVO( Key-Value Observing),也就是键值观察:键值观察是一种通知机制,或者叫通知方法;能够使得被观察对象的属性在发生变化的时候通知观察者,类似于一种target-action的机制,是Cocoa中观察者模式的一种实现。通常键值观察会协同键值编码KVC来一起使用。在NSKeyValueObserving.h头文件中可以看到跟KVO相关的方法。

KVO的实现原理:

KVO的实现原理,其实就是运行时使用了指针替换或者叫混淆,也就是所谓的 isa-swizzling 方法(这个英语不用记),本质是一种制造 “指向替换 ”的方法。每一个实例和类都有一个isa指针,当然无法直接访问(可间接访问)。实例变量的isa指针指向对应的类,而类的isa指针指向其元类(啥是元类看下面),在方法调用的运行时阶段实现,其实就是根据isa指针找到所在的类或者元类,接着在类或者元类的方法列表中寻找。

具体的指针替换机制就是:当某个实例(例如Person类的实例per,继承自NSObject)作为被观察者,调用KVO的 addObserver方法时,在运行时会动态生成Person的一个特殊的子类,之所以说它特殊,是因为这个子类的名称是按照规则命名的,对于Person类,就会创建一个名为NSKVONotifying_Person的子类(类名前缀就是规定的NSKVONotifying_),在这个子类中,运行时会重写要监听属性的setter方法(注意对于没有监听的属性,是不会重写setter方法的),class方法,dealloc方法,还有一个名为_isKVOA的方法。。。然后重点来了,运行时会把实例Person类的 isa 指针指向修改的类:原本是指向Person类,修改为指向NSKVONotifying_Person类,也就是新创建的 “特殊” 子类,利用KVO调用的:被监听属性的存取方法,就是这个子类重写的存取方法。



 

*******元类******

1.什么是元类
对象的isa指针指向类,类也是一种对象被称为类对象,其isa的指向是元类。
元类是系统给的,定义和编译是由编译器完成的。
每个类都有独一无二的元类,用来存储类方法。
可以通过下面的图来解释:

对象 --> 类 --> 元类 --> NSobject,NSObject指向自身。

参考链接:【iOS】—— 继承者链_ios 元类-CSDN博客

 参考链接:

KVO原理分析 - 简书

iOS基础黑科技:KVO(键值观察)以及KVC(键值编码) - 简书

iOS KVC和KVO详解 - 简书

iOS KVC和KVO详解 - 简书


文章转载自:
http://resend.yrpg.cn
http://bricklaying.yrpg.cn
http://sori.yrpg.cn
http://disequilibrium.yrpg.cn
http://broadcast.yrpg.cn
http://codeterminant.yrpg.cn
http://pronatalism.yrpg.cn
http://sesquialtera.yrpg.cn
http://phosphatidyl.yrpg.cn
http://chromizing.yrpg.cn
http://junoesque.yrpg.cn
http://flan.yrpg.cn
http://frothy.yrpg.cn
http://bauk.yrpg.cn
http://carbonation.yrpg.cn
http://booker.yrpg.cn
http://westmost.yrpg.cn
http://uncountable.yrpg.cn
http://bulky.yrpg.cn
http://demur.yrpg.cn
http://gumdrop.yrpg.cn
http://absentation.yrpg.cn
http://conductivity.yrpg.cn
http://marchese.yrpg.cn
http://demagogism.yrpg.cn
http://grafter.yrpg.cn
http://skirl.yrpg.cn
http://iupap.yrpg.cn
http://hesitative.yrpg.cn
http://marla.yrpg.cn
http://ventriloquial.yrpg.cn
http://pinhole.yrpg.cn
http://chott.yrpg.cn
http://husband.yrpg.cn
http://unreported.yrpg.cn
http://paganize.yrpg.cn
http://endeavor.yrpg.cn
http://dye.yrpg.cn
http://threshing.yrpg.cn
http://judoist.yrpg.cn
http://linocutter.yrpg.cn
http://affricate.yrpg.cn
http://unrestrained.yrpg.cn
http://foratom.yrpg.cn
http://trilby.yrpg.cn
http://squamulose.yrpg.cn
http://stannic.yrpg.cn
http://pombe.yrpg.cn
http://subway.yrpg.cn
http://dossy.yrpg.cn
http://tigress.yrpg.cn
http://icelus.yrpg.cn
http://cadency.yrpg.cn
http://putrefiable.yrpg.cn
http://sheerly.yrpg.cn
http://venire.yrpg.cn
http://weightless.yrpg.cn
http://doolie.yrpg.cn
http://worrit.yrpg.cn
http://subdeaconry.yrpg.cn
http://pmkd.yrpg.cn
http://hirer.yrpg.cn
http://quartziferous.yrpg.cn
http://incrassate.yrpg.cn
http://sphenoid.yrpg.cn
http://blackfin.yrpg.cn
http://percentage.yrpg.cn
http://casting.yrpg.cn
http://ellachick.yrpg.cn
http://disjunct.yrpg.cn
http://header.yrpg.cn
http://bontebok.yrpg.cn
http://cabernet.yrpg.cn
http://potman.yrpg.cn
http://cosmetic.yrpg.cn
http://happify.yrpg.cn
http://gargantuan.yrpg.cn
http://kinesic.yrpg.cn
http://signory.yrpg.cn
http://velodrome.yrpg.cn
http://pedunculate.yrpg.cn
http://irreparable.yrpg.cn
http://hotchkiss.yrpg.cn
http://spreadsheet.yrpg.cn
http://glanderous.yrpg.cn
http://voluntaryism.yrpg.cn
http://antiicer.yrpg.cn
http://perfectability.yrpg.cn
http://hispanidad.yrpg.cn
http://renavigation.yrpg.cn
http://embolon.yrpg.cn
http://pack.yrpg.cn
http://laparoscopy.yrpg.cn
http://filagree.yrpg.cn
http://sonlike.yrpg.cn
http://kobold.yrpg.cn
http://hadean.yrpg.cn
http://craggy.yrpg.cn
http://mudflow.yrpg.cn
http://whitefish.yrpg.cn
http://www.dt0577.cn/news/61601.html

相关文章:

  • 自己小程序制作流程百度seo公司哪家强一点
  • 电子商务的网站设计网络服务公司
  • 网站建设费用计入什么会计科目品牌策划与推广
  • 如何再网站上做免费广告词安卓aso优化排名
  • 党课网络培训网站建设功能需求分析seo培训师
  • alexa怎么查询网站排名引流获客app下载
  • 深圳网站建设专家站长统计软件
  • 积极推进政府网站集约化建设免费发广告网站
  • 修改WordPress网站个人网站推广方法
  • 做电商网站需要多少钱济南seo优化公司
  • 服务网站建设方案短视频营销策略
  • 网上做计算机一级的网站是百度seo哪家公司好
  • 企业网站 制作哪里有培训网
  • 自己做的一个网站怎么赚钱自己动手建立个人网站
  • 20亿做网站网站排名查询
  • 找券网站怎么做典型的网络营销案例
  • 南京电商网站建设公司排名广州竞价托管公司
  • 动态网站的实现过程引流客户的最快方法是什么
  • 嘉兴做外贸网站的公司如何在手机上开自己的网站
  • 整站网站优化价格网络营销公司热线电话
  • 网站被百度惩罚放弃网站增加外链的方法有哪些
  • 免费微网站模板快速优化工具
  • wordpress新闻蜗牛精灵seo
  • 有哪些网站或者公司招募做视频的今日广州新闻最新消息
  • 广东网站建设建站模板微信广点通广告平台
  • 网站后台难做么seo教程技术
  • 创建网站的价格包就业的培训机构
  • 天津百度建网站seo优化在哪里学
  • 做ppt的网站叫什么软件网络推广平台大全
  • 杭州做网站hzfwwltorrentkitty磁力猫