ios - Swift - 防止创建类的两个引用

标签 ios swift

<分区>

我有应用程序委托(delegate),它是应用程序中的一个点。我还创建了 ApplicationManager 类,它现在是应用程序委托(delegate)的一部分。

所以我想要实现的是保护我的代码不被其他开发人员以错误的方式使用。

假设我的 ApplicationManager 看起来像这样:

class ApplicationManager {

    var api: API?

    static func instance() -> ApplicationManager {
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            fatalError()
        }
        return appDelegate.applicationManager
    }
}

我想确保 used 将通过以下方式使用 ApplicationManager:

让 am = ApplicationManager.instance() 但不要像这样 am = ApplicationManager() 那样会再创建一个我不想要的管理器。

有没有办法显示构建时间错误?或删除一些消息?或在应用程序中有多个 ApplicationManager 时崩溃崩溃 =)

最佳答案

只需将您的 init 设为私有(private)即可:

private init() {}

此外,单例模式通常会简单地实现为:

static let shared = ApplicationManager()

调用为 ApplicationManager.shared。如果您希望 AppDelegate 创建实例,private init 将不起作用。

关于ios - Swift - 防止创建类的两个引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57290379/

相关文章:

ios - Metal 多计算着色器与单计算着色器

ios - 播放长音乐时,AVPlayer 中的搜索时间更快

ios - 为什么每次点击 UITextField 时都会调用 viewDidLayoutSubviews

ios - 为什么 userLocation 在 Mapbox 上返回 (-180.0,-180.0) 坐标?

ios - Swift CollectionView ReloadData 行为怪异

ios - 使用 Alamofire 和 multipart/form-data

ios - 从 Parse 查询 GeoPoint 并将其作为 MKAnnotation 添加到 MapKit?

iOS 给定日期的倒计时器

ios - iOS 中 UIImageFromCVMat() 的应用程序崩溃

ios - 自定义 UITableViewRowAction 按钮