Swift:有没有办法确保只有特定的类才能创建其他类的对象

标签 swift oop factory-method

我们有 2 个类 BaseClassA 和 ClassB。 BaseClassA 有多个子类,如下所示

SubClassA1.swift

class SubClassA1 : BaseClassA {
    private var someFlag = false
    private var context: SomeContextClass?

    func setContext(_ context: SomeContextClass) {

    }
}

ClassB.swift

class ClassB {
    func create() -> BaseClassA {
        //This method will create object of SubClassA1 and return
    }
}

我们希望外界总是使用ClassB来创建SubClassA1的对象,而不是直接创建SubClassA1的对象。有没有办法确保只有 ClassB 可以实例化 SubClassA1 的对象?

最佳答案

在SubClassA1的init方法中,调用

Thread.callStackSymbols

它返回一个字符串数组,其中包含线程堆栈的详细信息。数组中的第二个字符串将为您提供调用 init 方法的类和方法的详细信息。因此,如果它不是从 SubClassB1 调用的,您可以生成一个断言。

关于Swift:有没有办法确保只有特定的类才能创建其他类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076686/

相关文章:

php - 将对象转换为数组

javascript - JavaScript 代码越可读,速度就越慢?

java - 看不懂Java普通类库的用法

lua - 为什么它不是原型(prototype)但它是同一张表

design-patterns - 工厂模式实现的变体

java - 为什么工厂方法被声明为 protected ?

swift - Nil 不能分配给类型 'Timer' 吗?

ios - Set 不适用于 NSManagedObject?

ios - 使 UIScrollView 可访问其他类

swift - Steam 3 : Eventloop bug detected when using wait()