swift - SWIFT 在 24 小时后使单例实例过期
问题描述
我的应用程序中有一个单例,其中包含用于 API 访问的用户令牌。这些令牌每 24 小时在服务器端过期。我需要我的应用程序来做同样的事情。我将值存储在 UserDefaults 中。我知道这不安全:)。
我有一个单例的类函数,它在调用时会破坏()。我需要确保在单例初始化后每 24 小时调用一次此类 func。
我做了一堆搜索,我真的找不到任何关于 Swift 中过期对象的信息。也许我使用了错误的关键术语?这是我的代码:
class AimsiAdminController {
private static var privateShared:AimsiAdminController?
class func shared() -> AimsiAdminController {
guard let unwrappedShared = privateShared else {
privateShared = AimsiAdminController()
return privateShared!
}
return unwrappedShared
}
class func destroy() {
privateShared = nil
}
let securityToken: String
private let defaults = UserDefaults.standard
private init() {
self.securityToken = self.defaults.string(forKey: "securityToken") ?? ""
}
}
解决方案
这边走:
private init() {
self.securityToken = self.defaults.string(forKey: "securityToken") ?? ""
let interval = DispatchTime.now() + 24 * 60 * 60
DispatchQueue.main.asyncAfter(deadline: interval) { AimsiAdminController.destroy() }
}
每次初始化,都会在给定时间后调用destroy
推荐阅读
- javascript - Vuejs2 监听页面滚动失败
- scala - 如何在 AWS Glue 在 Spark 中创建的 Dataframe 上运行 SQL SELECT?
- codeigniter - 如何在一列中获取所有数据?
- java - 如何实现联合查找算法?
- javascript - 我的浏览器没有执行我的 Javascript 代码。浏览器只是按照在我的文本编辑器上编写的方式输出它
- kubernetes - 无法让 Minikube 在 Windows 10 上运行
- java - 使用 Groupie (Kotlin) 时 RecyclerView 不可见
- orange - 如何在逻辑回归模型中找到 p 值
- wix - 指定帐户的 MSI 重新安装问题已存在错误
- django - 在让我们加密的 SSL 证书之后,Django 将无法连接到 postgresql