Swift:有没有办法确保只有一个特定的类可以创建另一个类的对象

时间:2018-01-03 11:41:15

标签: swift oop factory-method

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

SubClassA1.swift

df.withColumn("arr", when(size(col("arr")) == 0, lit(None)).otherwise(col("arr") ) ).show()

ClassB.swift

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

    func setContext(_ context: SomeContextClass) {

    }
}

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

1 个答案:

答案 0 :(得分:0)

在SubClassA1 init方法中,调用

Thread.callStackSymbols

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