我有 2 组不可变/可变类型。
@class AAA;
@class BBB;
@class MutableAAA;
@class MutableBBB;
@interface AAA : NSObject
@property (readonly,nonatomic,copy) BBB* bbb;
@end
@interface BBB : NSObject
@property (readonly,nonatomic,copy) AAA* aaa;
@end
@interface MutableAAA : AAA
@property (readwrite,nonatomic,copy) MutableBBB* bbb;
@end
@interface MutableBBB : BBB
@property (readwrite,nonatomic,copy) MutableAAA* aaa;
@end
因为Objective-C支持返回类型协变,这是完全合法的,但问题是两个类相互引用,我不知道如何让编译器在定义它之前知道它MutableBBB
是一个子类。BBB
当然,我可以回退到类别来解决这个问题,但我想在主接口主体中定义这些,因为这是基本类定义的一部分,而不是额外的方法。
目前 Clang 正在生成警告。我怎么能在没有警告的情况下做到这一点?
更新
我的意图是公开可变类类型以启用对对象树的就地编辑。readonly/readwrite
其实没关系。我想我有两个选择要避免。
- 使用类别。
- 添加分离的可变版本访问器。(类似于
-mutableBytes
中的方法NSMutableData
)
我只是想知道是否有一些我还不知道的未知功能可以启用这种相互引用的子类化。