 print("Hello, World!")
 
 
-
-
-// -----------------------------
+// -----------------------------
+
+
+// KeyPath 和 KVO
+
+/*
+ “KVO 的目的并不是为当前类的属性提供一个钩子方法，而是为了其他不同实例对当前的某个属性 (严格来说是 keypath)
+ 进行监听时使用的。其他实例可以充当一个订阅者的角色，当被监听的属性发生变化时，订阅者将得到通知。”
+ “像通过监听 model 的值来自动更新 UI 的绑定这样的工作，基本都是基于 KVO 来完成的。”
+ 
+ “在 Swift 中我们也是可以使用 KVO 的，不过 KVO 仅限于在 NSObject 的子类中，因为 KVO 是基于 KVC (Key-Value Coding)
+ 以及动态派发技术实现的，而这些东西都是 OC 运行时的概念。另外由于 Swift 为了效率，默认禁用了动态派发，
+ 因此想用 Swift 来实现 KVO，我们还需要做额外的工作，那就是将想要观测的对象标记为 dynamic 和 @objc。”
+ 
+ 
+ 
+ */
+
+
+// -----------------------------
+
+/*
 
 //自省
 /*

//let string = "abc"
//if string is String { print("is string") } // 警告：'is' test is always true



// -----------------------------


 因此在绝大多数情况下，我们使用的 Swift 类型都应该是在编译期间就确定的。
 如果在你写的代码中经常需要检查和确定 AnyObject 到底是什么类的话，几乎就意味着你的代码设计出了问题”
 
*/

class ClassA: NSObject { }
