一、KVO 是什么? KVO 是 Objective-C 对观察者设计模式的一种实现。【另外一种是:通知机制(notification),详情参考:iOS 趣谈设计模式——通知】; KVO 提供一种机制,指定一个被观察对象(例如 A 类),当对象某个属性(例如 A 中的字符串 name)发生更改时, ...
分类:
移动开发 时间:
2018-03-13 15:41:42
阅读次数:
264
#import "NSObject+WQKVC.h" #import /** KVC 首先调用的方法顺序: |- setter: setKey -> setIsKey |- getter: getKey -> key -> isKey |- - (Bool)accessInstanceVariabl... ...
分类:
其他好文 时间:
2018-03-10 00:15:03
阅读次数:
188
题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹 ...
分类:
其他好文 时间:
2018-03-03 18:13:28
阅读次数:
173
在swift4之前,使用kvo只需要继承NSObject 就可以了。但是swift4之后发生了变化,必须在class之前加入@objcMembers修饰,不然就没有效果了。 下面举个例子:如定义一个Person类想监听其kvo的变化除了继承NSObject之外,还必须在class之前添加@objcM ...
分类:
移动开发 时间:
2018-02-27 01:08:28
阅读次数:
634
接上篇《 iOS中的crash防护(一)unrecognized selector sent to instance》 我们攻克了找不到方法实现的crash,这一篇我这里主要分析一下在KVC常见的crash。以及防护措施。 [object setValue:nil forKey:key] value ...
分类:
移动开发 时间:
2018-02-22 10:50:40
阅读次数:
494
了解cocoa:Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之中的一个(其他四个是Carbon、POSIX、X11和Java)。苹果的面向对象开发框架,用来生成 Mac OS X 的应用程序。基本的开发语言为 Objective-c, 一个c 的 ...
分类:
其他好文 时间:
2018-02-19 11:34:27
阅读次数:
225
前言:先自己尝试去回答,回答不了再看参考答案,你才能学的更多! 1.MVC具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model? 2.两个无限长度链表(也就是可能有环) 判断有没有交点 3.UITableView的相关优化 4.KVO、Notification、d ...
分类:
其他好文 时间:
2018-02-16 23:15:48
阅读次数:
337
前言 关于 "CAAnimation" 和 "CALayer" 类,核心动画扩展了NSKeyValueCoding协议。这个扩展为一些keys添加了默认值,扩大了封装协议,添加了为CGpoint、CGRect、CGSize和 "CATransform3D" 类型的支持。 ...
分类:
其他好文 时间:
2018-02-08 20:11:01
阅读次数:
284
由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby、Python的动态特性,例如动态类型、动态加载、动态绑定等。今天我们着重介绍ObjC中的键值编码(KVC)、键值监听(KVO)特性: 键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因 ...
分类:
其他好文 时间:
2018-02-02 11:39:03
阅读次数:
188
KVO的基本原理大概是这样的 当一个对象被观察时, 系统会新建一个子类NSNotifying_A ,在子类中重写了对象被观察属性的 set方法, 并且改变了该对象的 isa 指针的指向(指向了新建的子类) , 当属性的值发生改变了, 会调用子类的set方法, 然后发出通知 一. KVO 的基本使用 ...
分类:
其他好文 时间:
2018-01-18 23:08:13
阅读次数:
233