我们有 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/