2011-12-16 14 views
0

null以外の変数を取得しようとするとSIGABRTが表示されます。コード:モデルから値を取得できません

NSLog(@"%@", appDelegate.xmlData.magDictionary); 
for (Magazine *ibb in appDelegate.xmlData.magDictionary) { 
     NSLog(@"%@", [ibb title]); 
} 

出力:

{ 
     1 = "<Magazine: 0x6c8fe10>"; 
     2 = "<Magazine: 0xf168d00>"; 
     3 = "<Magazine: 0xf169f50>"; 
     4 = "<Magazine: 0xf16b6d0>"; 
     5 = "<Magazine: 0xf170490>"; 
     6 = "<Magazine: 0xf1716c0>"; 
     7 = "<Magazine: 0xf172a80>"; 
     8 = "<Magazine: 0xf173f10>"; 
    } 

とSIGABRTのNSLog上(の "%@" @、[IBBタイトル]); マガジンモデル:@synthesize title、key、teaser、tags、items、progressBar;

+3

'@ property'の定義は、' retain'、 'assign'、' copy'の場合、 '@ synthesisize'よりも面白いですか? –

+0

@property(nonatomic、retain)NSString * title; –

+0

'title'プロパティが正しく設定されていないと思います。 'Magazine'オブジェクトの割り当て/初期化を見てください。 –

答えて

1

コメントによると、Magazineイニシャライザで間違っているようです。
プロパティのためにretainモードを使用することは本当に問題ではありませんが、代わりにcopyを文字列に使用しています。

ので、私はあなたがクラッシュを引き起こし、任意の値を印刷しようとする前に、それが割り当て解除された賭け、とにかく、originalMagから来るtitle文字列が保持されていない、またはあなたのMagazinetitle IVARに割り当てられたときに、すべてのコピー。

もう一つのポイント、やって:

title = [[NSString alloc] init]; 
title = [originalMag title]; 

は、メモリリークを生成する(そしてあなたはまだ元titleを保持しません)。
はそうのような初期化子を書き直し :

-(id)initWithMagazine:(Magazine *)originalMag { 
    ..... 
    title = [[originalMag title] copy]; 
    // or title = [[NSString alloc] initWithString:[originalMag title]]; 
    .... 
} 

と、このアプリのクラッシュを解決する必要があります。

関連する問題