1

指定された初期化子について一般的な質問があります。私はいくつかのクラスを持っていて、そこからイニシャライザーを呼び出したいのですが、@プロパティにデータの受け渡しを開始する前に、データをデフォルトにしたいです。例えば:

-(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はnullではなく、キーにnullオブジェクトがないと想定できます。

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 に答える