1

我对指定初始化程序有一般性问题。我有一个类,从那里我想调用一个初始化程序,但在我开始用传递数据填充我的@properties 之前,我想将数据设为默认值。例如:

-(id)initWithDefault:(NSDictionary*)defaultTemplate
{
    self = [super init];

    _fontColor = [defaultTemplate objectForKey:@"color"];
    _fontSize = [[defaultTemplate objectForKey:@"size"] intValue];

    return self;
}

-(id)initWithTemplate:(NSDictionary*)template
{
    self = [self initWithDefault:myDefaultTemplate];

    //now i doing something with my template

    return self;

}

这是防止 null @properties 的一种方法吗?这是对指定初始化程序的正确使用吗?当然,您可以假设 myDefaultTemplates 不为空,并且键中没有空对象。

4

2 回答 2

2

这对我来说似乎很好。我会使用安全的方式(如下所示),但否则你的代码很好。

-(id)initWithTemplate:(NSDictionary*)template 
{
    if(self = [self initWithDefault:myDefaultTemplate]) {

        //now i doing something with my template

    }

    return self;

}
于 2012-05-08T10:02:19.690 回答
0

鉴于 _fontColor 和 _fontSize 变量是您的属性的局部变量,您的实现非常好。

adig 的建议只是对您已经实施的内容的增强。当您的对象由于任何原因未分配时,此检查会处理这种情况。

于 2012-05-08T10:33:20.663 回答