这可能是Java编码器报告的常见Objective-C问题,但我不知道该怎么称呼它或如何搜索答案。比方说,我有一个类和延伸它的另一个类:覆盖Objective-C中的继承类型
AbstractModel
@interface AbstractModel {
}
ModelImpl
@interface ModelImpl : AbstractModel {
}
分开这些,我还有两节课,再一个延伸另一种:
ControllerA
@interface ControllerA {
AbstractModel *foo;
}
@property (nonatomic, retain) AbstractModel *foo;
ControllerB
@interface ControllerB : ControllerA {
}
我希望能够说foo
在ControllerA可以包含AbstractModel或其任何亚型。但是,如果我尝试在其中存储AbstractModel以外的任何内容,编译器会给我一个警告。 (当然,我明白,类不能真正在ObjC是抽象的,但饶了我吧。)
我也想能够在特定的子类,以“锁定”的foo
属性。我想说的是,ControllerB中的foo
例如只能包含ModelImpl4。这可能吗?
解决这类问题的传统Objective-C最佳实践是什么?以这种方式使用继承 - 或者为了实现这个目标 - 在Objective-C中不是一个好主意?
看看UITableView如何处理委托属性的例子。在这种情况下,它是一个协议,但它会和一个类一样好。 – drawnonward 2010-06-22 18:35:20