我来自Java背景,当你声明内部类时,它是静态的,并且无法访问外部类的实例,或者它不是静态的,并且可以访问正在进行的外部类的实例经营.见http://en.wikipedia.org/wiki/Inner_class#Types_of_nested_classes_in_Java
斯威夫特有这个概念吗?从我的测试中,我似乎无法获得访问Outer的self对象,但我绝对可以做一些错误.
class Outer {
let value = ""
class Inner {
func foo() {
let bar = value // 'Outer.Type' does not have a member named 'value'
}
}
}
Run Code Online (Sandbox Code Playgroud)
cou*_*elk 36
AFAIK,您不能开箱即用访问外部类.
但你能做的是:
class Outer {
let value = ""
var inner = Inner()
class Inner {
weak var parent: Outer! = nil
func foo() {
let bar = parent.value
}
}
init() {
inner.parent = self
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
class Outer {
class Inner {
unowned let parent: Outer
init(parent: Outer) {
self.parent = parent
}
}
let value = ""
var inner: Inner! = nil
init() {
inner = Inner(parent: self)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17931 次 |
| 最近记录: |