覆盖子视图控制器的属性与通过父视图控制器设置它们

时间:2010-02-18 16:03:15

标签: objective-c cocoa-touch properties

如果您想通过更改其中一个属性的值来修改视图控制器的默认行为,那么它是否被认为是更好的形式

  1. 实例化该类并直接设置其属性,或

  2. 将其子类化并覆盖属性?

  3. 对于前者,它将成为父视图控制器配置其子项的责任,而后者则子项将有效地配置自己。

    编辑:更多信息:

    我所指的类是FetchedTableViewController,它是UITableViewController的子类,我用它来显示Core Data fetch操作的结果。

    我想在两个地方显示提取结果,每个地方都有不同的提取请求。

    我正在尝试决定为每个子类创建子类是否更好,并覆盖fetchRequest属性,或者让父控制器负责为其子级设置fetchRequest属性。

2 个答案:

答案 0 :(得分:0)

一般来说,Cocoa旨在最小化子类化(因此代理的广泛使用)。也就是说,UIViewController是一个专门设计为子类的类。由于保持代码“本地”更好,我建议继承子类。

答案 1 :(得分:0)

根据您的描述,这听起来像是您应该提供自己的init的地方:

- (id)initWithParamterINeed: (BOOL)aParameter;
{
    if (( self = [super initWithNibName: @"MyNibName" bundle: nil] )) {
        parameter = aParameter;
    }
    return self;
}