2

我在 superclass.h 中定义了一个属性,如下所示:

@property (nonatomic, retain, readonly) NSArray *objects;

我无权访问 .m 文件。

在我的子类中,在某些情况下我需要写入此objects属性。

我尝试了以下两种解决方案:

  1. 声明一个在我的子类中调用的覆盖readwrite属性。objects但是,当调用 [super viewDidLoad] 关于超类中的设置器时,这会给我一个错误setObjects

  2. 在我的子类中声明一个不同的属性commentObjects- 并包含一个标志以使用超类的objects数组属性或此子类属性。有时可以使用超类加载的对象,但有时我需要使用我的子类加载的对象。这确实有效,但是非常混乱,并且对于相同的数据使用两个不同命名的属性似乎是糟糕的设计。

有没有办法只使用一个属性来做到这一点?

4

1 回答 1

1

您可以稍微扩展您的第二种方法:而不是包含一个BOOL标志来指示要使用的属性,而是覆盖您的属性的 getter 以返回objects超类的值或您自己的可设置commentObjects属性的值:

-(NSArray*)objects {
    return usecCmmentObjects ? commentObjects : [super objects];
}
于 2013-07-25T00:51:33.380 回答