This post表明Objective-C没有“真正的”私有方法或属性,这意味着即使您没有在头文件中公开它们,您仍然可以在运行时访问它们。这是Swift属性和标有private
的方法的情况吗?
答案 0 :(得分:2)
虽然编译器阻止您直接访问私有属性,但您仍然可以通过Swift的新生内省对其值进行只读访问。考虑一个包含两个私有变量的结构:
// FileOne.swift
struct Secret {
private var password = "Password"
private var secretNumber = 42
}
在另一个文件中,我们创建一个实例。编译器不允许我们直接访问secretNumber
或password
,但我们可以使用reflect
来获取我们想要的内容:
// FileTwo.swift
var a = Secret()
var b = reflect(a)
for i in 0..<b.count {
println("\(b[i].0): \(b[i].1.value)")
}
// password: Password
// secretNumber: 42
目前,这种方式无法访问私有方法。