【发布时间】:2015-05-06 06:34:36
【问题描述】:
我有如下代码:
#import "ViewModelBase.h"
@interface ViewControllerA : UIViewController
@property (nonatomic, strong) ViewModelBase* viewModel;
@end
然后我需要执行以下操作:
#import "ViewControllerA.h"
@class ViewModelSubclass;
@interface ViewControllerB : ViewControllerA
@property (nonatomic, strong) ViewModelSubclass* viewModel;
@end
ViewModelSubclass.h 不应该被导入到 ViewControllerB.h,只能导入到 .m 文件。 但是,ViewModelSubclass 应该是 ViewModelBase 的子类。 这样做是为了对 ViewControllerB 的客户端隐藏 ViewModelSubclass 的接口。 如何解决“属性类型 'ViewModelSubclass*' 与继承自 ViewControllerA 的类型 'ViewModelBAse*' 不兼容”警告? 或者有什么更好的方法?
【问题讨论】:
-
也许我错了,但我认为你不能像这样覆盖超类中的属性
-
@Fonix,它有效,我实际上并没有覆盖一个属性,我'overscpecify'它的类型
-
但是超类和子类中的属性同名...但是类型不同,所以编译器可能会混淆
-
@Fonix,是的,但是最终类型是兼容的,所以我正在寻找一种方法来告诉编译器并“说服”它一切正常。
-
你解决了吗?
标签: objective-c inheritance forward-declaration