我有一个NSObject子类,BaseClass. BaseClass是几个子类SubClassA和SubClassB的占位符类.我在两个子类上都有一个实例变量.它们是相同的名称,并且都是另一个对象的相应子类.它们经常以非常相似的
如果我将变量移动到BaseClass中,我无法在SubClassA和SubClassB中指定它的正确子类,说我无法覆盖它.如果我在BaseClass中使用此实例变量的公共父类,我将失去对SubClassA和SubClassB如何工作之间不常见的事物的访问权限.
这是一个更原始的例子,但是我正在尝试做的基础知识.这个例子显然不起作用.我唯一的选择是选择在SubClassA和SubClassB中定义常用功能还是有正确的方法来实现我的目标?
class BaseClass: NSObject {
var myObject: MyObject
}
class SubClassA: BaseClass {
override var myObject: MyObjectA
}
class SubClassB: BaseClass {
override var myObject: MyObjectB
}
class MyObject: NSObject { }
class MyObjectA: MyObject { }
class MyObjectB: MyObject { }
这给了我错误:
如何使用通用?为简单起见,我删除了NSObjectProperty ‘myObject’ with type ‘MyObjectA’ cannot override a property with type ‘MyObject’
class MyObject {
}
class MyObjectA: MyObject {
}
class MyObjectB: MyObject {
}
class BaseClass<T> where T : MyObject {
var myObject: T?
}
class SubClassA: BaseClass<MyObjectA> {
}
class SubClassB: BaseClass<MyObjectB> {
}
