- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
KVO-Block-GCD-ARC笔记
一、KVO键值观察(无限视频):
键值-观察:对象可以通过它得到其它对象特定属性的变更的通知。也可以算是MVC模式的一种,让视图对象可以经由控制器层观察模型对象的一种的变更,即可以把变更通知从模型(经由控制器)传递给视图。基于NSKeyValueObserving非正式协议。
举例子介绍KVO,手动调用KVO,[self willChangeValueForKey:@”key”];这句话告诉NSObject保持key原来的值,[self didChangeValueForKey:@”key”];这句话是保持新的值,一旦model发出了一整批更新消息之后,这就跟它没有什么关系了。这个时候来看观察者是如何处理更新的,Controller来处理消息,然后更新它的view界面。
在控制器里面,如何时时更新消息呢?也就是得到model数据更新与否?肯定是在setModel:方法里面进行的,重写setModel方法,然后在这里监听,[model addObserve:self forkeyPath:@“mark” options:NSKeyValueObservingOptionInitial| NSKeyValueObservingOptionNew:contex:nil];同时还得实现一个回调方法,observeValueForKeyPath:keyPath ofObject:object change:dic context :context 首先判断下这个object是否是model那个类型的,而且keypath是否是我们开始设置的,然后给view赋值,change里面的对象就是需要的,接着从新setNeedsDisplay方法即可刷新,
也可以监听属性值的变化的,属性好像是需要使用self.myName 是需要这么赋值的好像才可以触发监听的,或者是直接使用setValue:forKey:如何使用_myName = @”xx”,这样好像是不得行的。不监听的话就需要remove掉即可。(无限互联视频)
例子:大文件的拷贝,可以实现监听已拷贝的进度。
二、KVC键值编码:
kvc是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性,(即使是私有的变量也是可以访问的,并且是支持带有对象值的属性),同时也支持纯数值类型,这个时候会自动封装和解包,我们打包成NSNumber类型的。
设置和访问,基本调用方法valueForKey:首先查找以键key或者是isKey命名的getter方法,如果不存在getter方法,它将在对象内部查找名为_key或是key的实例变量,setValue:forKey:是否存在set和get方法,有就优先调用,没有就会去查找名为_key或是key的实例变量。注意:这里的key是属性名称的。
声明为成员变量为public的话,在外部才可以访问的book-name = @”iPad”;如果是private则是不能访问的,如果是kvc那么就可以访问,通过setValue:forkey,然后valueForkey就可以获得。
还有个方法就是valueForKeyPath:是可以根据路径来设置和获取,当前对象还有个对象的属性,而这个对象也有自己的属性,比如:book有个author的对象,而author有自己的name变量,那么就可以使用,[book setValue: forKeyPath:]。还可以设置一个对应的数组。
三、Core Data:数据持久化
1、Core Data本身并不是数据库,而是Apple提供的对象持久化技术,它可以使用SQLite作为持久化存储的类型,但本身并不是一个数据库。
四、GCD:(Block、多线程、并发)(参见:iOS5.0- Cookbook)
并发:当2个或者是2个以上的任务同时执行时就发生了并发。即使只有一个CPU,现代操作系统也能够在同时执行多个任务,要实现这一点,它们需要给每一个任务从CPU中分配一定的时间片。例如,要在1s内执行同样优先级的任务,那么每一个任务都有100毫秒的CPU时间,这就意味着所有的任务就会在同一秒内执行,也就是并发执行。当然现在的CPU真正具备了同时执行多个任务的能力。
Grand Central Dispatch,是一个与block产生工作的低级C-API,GCD真正的用途是将任务分配到多个核心而又不让程序员担心哪个内核执行哪个任务,其核心是分派队列,由位于主操作系统的GCD来管理的线程池,你不会直接与线程有工作关系,你只有在分派队列上面工作,将任务分派到这个队列上面并要求队列来调用你的任务。GCD为运行任务提供了几个选择,同步执行、异步执行和延长执行,所有的方法和数据类型都以dispatch_关键字开
您可能关注的文档
最近下载
- 2025年广东东莞农村商业银行春季校园招聘笔试历年典型考题及考点剖析附带答案详解.docx
- 制浆车间生产初步技术方案(桉木).docx VIP
- 部编三年级上册语文第二单元主题阅读.doc VIP
- ARKInvestBigIdeas2025-歌者PPT中文校对版.pdf VIP
- 新中国55年统计资料汇编-全国篇.doc VIP
- 2025西双版纳供电局及所属县级供电企业项目制用工招聘(14人)笔试参考题库附答案解析.docx VIP
- (三十六计.docx VIP
- 2025年10月全国自考《马克思主义基本原理概论》真题及答案 .pdf VIP
- 大数据数据资产价值评估.pdf VIP
- 钟君申论笔记.doc VIP
文档评论(0)