gpt4 book ai didi

security - Swift 的私有(private)访问修饰符是否会阻止在运行时访问属性/方法?

转载 作者:可可西里 更新时间:2023-11-01 01:42:21 27 4
gpt4 key购买 nike

This post表明 Objective-C 没有“真正的”私有(private)方法或属性,这意味着即使您没有在头文件中公开它们,您仍然可以在运行时访问它们。标记为 private 的 Swift 属性和方法是否属于这种情况?

最佳答案

虽然编译器阻止您直接访问私有(private)属性,但您仍然可以通过 Swift 的新生内省(introspection)以只读方式访问它们的值。考虑一个具有两个私有(private)变量的结构:

// FileOne.swift
struct Secret {
private var password = "Password"
private var secretNumber = 42
}

在另一个文件中,我们创建了一个实例。编译器不会让我们直接访问 secretNumberpassword,但我们可以使用 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

目前无法通过这种方式访问​​私有(private)方法。

关于security - Swift 的私有(private)访问修饰符是否会阻止在运行时访问属性/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com