iOS-KVO-GCD-Block-Delegate-单例-NSUserDefaults

这里集成了以上所有的小例子,帮助理解,先上demo:GitHub - paradisery/iOS-KVO-GCD-Block-Delegate-shareInstance-NSUserDefaults-Demo: KVO-GCD-Block-Delegate-单例-NSUserDefaults传值 详解

KVO:  

在MVC设计架构下的项目,KVO机制很适合实现mode模型和view视图之间的通讯。

代码中,在模型类A创建属性数据,在控制器中创建观察者,一旦属性数据发生改变就收到观察者收到通知,通过KVO再在控制器使用回调方法处理实现视图B的更新;

KVO 的实现依赖于 Objective-C 强大的 Runtime,key-value observing:监听某个对象的某个属性发生变化,当发生变化,观察者会调用相应函数,当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制。

GCD和NSOpertaionQueue:

关系:①:先搞清两者的关系,NSOpertaionQueue用GCD构建封装的,是GCD的高级抽象!

②:GCD仅仅支持FIFO队列,而NSOperationQueue中的队列可以被重新设置优先级,从而实现不同操作的执行顺序调整。GCD不支持异步操作之间的依赖关系设置。如果某个操作的依赖另一个操作的数据(生产者-消费者模型是其中之一),使用NSOperationQueue能够按照正确的顺序执行操作。GCD则没有内建的依赖关系支持。

③:NSOperationQueue支持KVO,意味着我们可以观察任务的执行状态。

了解以上不同,我们可以从以下角度来回答

性能:①:GCD更接近底层,而NSOperationQueue则更高级抽象,所以GCD在追求性能的底层操作来说,是速度最快的。这取决于使用Instruments进行代码性能分析,如有必要的话

②:从异步操作之间的事务性,顺序行,依赖关系。GCD需要自己写更多的代码来实现,而NSOperationQueue已经内建了这些支持

③:如果异步操作的过程需要更多的被交互和UI呈现出来,NSOperationQueue会是一个更好的选择。底层代码中,任务之间不太互相依赖,而需要更高的并发能力,GCD则更有优势

“在大概97%的时间里,我们应该忘记微小的性能提升。过早优化是万恶之源。”只有Instruments显示有真正的性能提升时才有必要用低级的GCD。

Block:

block的核心思想:比如我打你一巴掌(发送消息),然后你说你打到我了(响应消息),那我心里就爽了(回调block).

block的内存空间是另外开辟的,所以不会立马执行block内的代码,block就是代码块,什么时候调用,什么时候才响应。

注意: __weak typeof(self) weakSelf =self;防止循环引用。

Delegate:

代理就是雇佣A方和被雇佣B方定一个协议:“类名+Delegate”,然后有协议方法:”代理传值方法“,让B用协议方法传个值,A方实现代理方法,拿到值。这个代理就完成了。

单例:

简单的说,单例是一个特殊的实例,在单例所属的类中只存在单例这么一个实例,并且单例类似全局变量,在系统任意地方都能访问单例,就是两种写法:

NSUserDefaults:

NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信息,这时候就不能直接存储到NSUserDefaults了,这个就是把值存在全局本地,在任意地方都可以调用,注意的就是键值,和增删。


后续还会往更新,都是根据自己的理解编写,有不对的地方欢迎指正。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 23,688评论 30 465
  • 1. 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 1.1 深拷贝同浅拷贝...
    Yeso阅读 1,110评论 0 14
  • 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。• 深拷贝同浅拷贝的区别:浅拷...
    JonesCxy阅读 463评论 1 7
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 613评论 0 10
  • 这是最后一次的新精英培训营培训了,在本来积蓄就不多的情况下,还花了一大笔钱来投资职业规划的学习,这本身对于我这个小...
    蜗牛奕阅读 132评论 0 1