在自定义类中设置全局变量的默认值?

时间:2009-02-22 21:04:37

标签: objective-c cocoa xcode macos

我有一个自定义类,它有很多用于自定义的访问器方法。我的问题是,如果程序员使用这个类并且不打算为所有这些方法分配值,因为他不知道它们或者不想打扰,我怎样才能让该类假设一个默认视图?我不能使用awakeFromNib,因为这会覆盖有意义的定制,例如AppController awakeFromNib。

有任何简单的方法吗?

编辑:

NSView中的类,自定义方法只修改实例变量,然后告诉视图重绘(背景颜色等)。当我没有明确告诉对象某处为所有这些自定义项分配值时,它会将它们设置为零。我需要将其更改为假设可用的默认值。

2 个答案:

答案 0 :(得分:1)

我对你要做的事感到困惑。如果要为类成员设置默认值,只需在init方法中指定它们:

- (id) init
{
    if((self = [super init]))
    {
        member1 = member1default;
        member2 = member2default;  // etc.
    }
    return self;
}

- (id) initWithCoder:(NSCoder *)encoder  // this is called for objects constructed from a NIB
{
    if((self = [super initWithCoder:encoder]))
    {
        member1 = member1default;
        member2 = member2default;  // etc.
    }
    return self;
}

答案 1 :(得分:0)

(很抱歉是StackOverflow noob;我似乎无法评论其他人的答案。)

是的,您通常会在自定义NSView子类中覆盖initWithFrame。确保你也在调用超类的initWithFrame:方法:

self = [super initWithFrame:frameRect];

关于加载大量堆栈帧的错误消息让我觉得你可能无意中创建了一个无限递归循环。但是,如果没有看到我无法肯定的代码。