我试图得到一些非常类似于WWV 2017基金会谈论KVO观察的例子.我看到的唯一不同于那次谈话的差异是,我不得不调用super.init(),我不得不隐藏地解开"kvo"令牌.
以下用于游乐场:
struct Node {
let title: String
let leaf: Bool
var children: [String: Node] = [:]
}
let t = Node(title:"hello", leaf:false, children:[:])
let k1 = \Node.leaf
let k2 = \Node.children
t[keyPath: k1] // returns "false" works
t[keyPath: k2] // returns "[:]" works
@objcMembers class MyController : NSObject {
dynamic var tr: Node
var kvo : NSKeyValueObservation!
init(t: Node) {
tr = t
super.init()
kvo = observe(\.tr) { object, change in
print("\(object) \(change)")
}
}
}
let x …
Run Code Online (Sandbox Code Playgroud) 在新语法Objective-C
中Xcode 5
是@import
导入一个框架.
请参阅问题了解详情.优点是您不必在项目中包含框架以避免链接器错误,您不需要将引号和.h仅添加到框架的名称,对于预编译的头文件更快,并且您有一个名称空间保护您免受意外重命名符号.所有不错的补充.
我的问题是,对于您自己的文件,例如MyFancyViewController.h,您是继续使用#import
还是@import完全替换它?另外,我可以轻松定义自己的模块吗?在同一个文件中使用两种语法看起来更麻烦.