gpt4 book ai didi

ios - 在 Swift 中将静态函数声明为私有(private)时的性能和安全问题

转载 作者:行者123 更新时间:2023-11-28 15:06:15 24 4
gpt4 key购买 nike

我有一个结构类,用于存储有关手机和应用程序属性的数据,例如屏幕分辨率、PhoneModel、ApplicationInstalledDate、wifiDetailInfo。它只会在应用程序打开时声明一次。我想为每个属性编写函数,因为会有 30 个属性,在 init 方法中我想调用每个函数来声明属性。当我搜索时,我不能像

property = self.function()

所以我将函数声明为 private static,如下面的代码所示。

我的问题是;

1-) 当我声明和调用这样的函数时,它们会异步工作吗?如果没有,这会不会是一个性能问题,因为我在应用程序启动时调用它们 (AppDelegate),我不确定它们是否会影响应用程序打开时间。

2-) 此外,我的应用程序需要安全。也许这是一个愚蠢的问题,但我想到了一些事情。如果我将一个函数声明为静态的,即使它是私有(private)的,在进行逆向工程并尝试更改或获取一些数据时是否更容易访问它?

struct DeviceDataModel {
let applicationInstalledDate: String
//Continue

init?(){
applicationInstalledDate = DeviceDataModel.getApplicationInstalledDate()

}
private static func getApplicationInstalledDate() -> String{
let urlToDocumentsFolder = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
//installDate is NSDate of install
return (try! FileManager.default.attributesOfItem(atPath: urlToDocumentsFolder.path)[FileAttributeKey.creationDate] as! String)
}
}

最佳答案

没有函数是异步的,除非你这样定义它。因此,如果这些函数是由您定义的,并且您没有使它们异步(通过在后台线程上执行并调用回调以通知其完成),它们就不是异步的。检查this articlethis article关于异步方法的一些见解。

关于第二个问题 - 访问修饰符是关于 encapsulation and abstraction在面向对象的编程中 - 与应用程序安全性关系不大的概念 - 我不认为制作函数 private 而不是 internal (没有修饰符)可以使对代码进行逆向工程变得更加困难。

我能想象的唯一可能影响这个的场景可能是使用public/open,因为这样这些函数就可以在模块之外访问而无需任何逆向工程工具 - 但这需要攻击者将该应用程序添加为依赖项(他可以这样做,但我相信有更详细的方法来对应用程序代码进行逆向工程)。

关于ios - 在 Swift 中将静态函数声明为私有(private)时的性能和安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437151/

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