我在superclass.h中定义了一个属性:
@property (nonatomic, retain, readonly) NSArray *objects;
我无法访问.m文件。
在我的子类中,有些情况下我需要写入此objects
属性。
我尝试了以下两种解决方案:
在我的子类中声明一个名为readwrite
的重写objects
属性。但是,当关于超类中的setObjects
setter调用[super viewDidLoad]时,这会给我一个错误。
在我的子类中声明一个不同的属性 - commentObjects
- 并包含一个标志,以使用超类'objects
数组属性或此子类属性。有时候使用超类加载的对象是好的,但有些我需要使用我的子类加载的对象。这确实有效,但是非常混乱,只是看起来像使用两个不同命名属性的不良设计用于相同的数据。
有没有办法只使用一个属性来做到这一点?
答案 0 :(得分:1)
您可以稍微扩展第二种方法:而不是包含BOOL
标志来指示要使用的属性,覆盖属性的getter以返回objects
的值超类,或您自己的可设置commentObjects
属性的值:
-(NSArray*)objects {
return usecCmmentObjects ? commentObjects : [super objects];
}