2011-12-27 4 views
0

私はios-5でプロジェクトを開発し始めました。私は自分のアプリケーションでデータベースを作成しました。 93,55,68,95,45などの値を含むappDelegateにbdgDBArrを作成します。 badge_id = @ "93,55,68,95,45"のような文字列を作成します。 ここにappDelegate.sbがあります。 NSStringタイプとSB1はNSMutableStringタイプNSMutableStringをリリースしません

これは、このコードは完璧に働いて、出力93,55,68,45 を得るが、同時に私はのNSLogで、このエラーを得ている私のコード

NSMutableString *sb1 = [[NSMutableString alloc] init]; 

if (![appDelegate.bdgDBArr count]==0) { 
    for (int i=0; i < [appDelegate.bdgDBArr count]; i++) { 
     if (!i==0) { 
      [sb1 appendString:@","]; 
     } 
     [sb1 appendString:[[appDelegate.bdgDBArr objectAtIndex:i] valueForKey:@"key1"]]; 
    } 
} 
else { 
    [sb1 appendString:@""]; 
} 

appDelegate.sb = sb1; 
NSLog(@"appDelegate.sb showSB===%@",appDelegate.sb); 
[sb1 release]; //error wait_fences: failed to receive reply: 10004003 
sb1 = nil; 

です

wait_fences: failed to receive reply: 10004003 

アイデア?

+0

ARCがオンになっていますか?その場合、オブジェクトを解放する必要はありません。 – rckoenes

+1

@rckoenes実行時例外のように見えますが、コンパイルエラーではありません。一方、ARCはコンパイル時に行われます。 – 0x8badf00d

+0

@ 0x8badf00dあなたの権利があります。 – rckoenes

答えて

0

試してみてください:リリースの代わりにautoreleaseを使用してください。それは何か変わるのですか?

は、あなたのプロパティappDelegate.sbが@syntetise setter/getterを持つアプリケーションデリゲートで使用されているか、またはセッターに独自のコードを使用しましたか?この場合、コードを投稿してください。

2

私はあなたの問題を助けることはできませんが、コードを1ライナーに減らすことができます - appDelegate.sb = [appDelegate.bdgDBArr componentsJoinedByString:@","];これははるかに表現力豊かで正しいことです。

私たちがそこにいる間:
Objective-Cは、散文のように読むことができるコードを書くのが簡単です。 sbまたはbdgDBArrのようなメンバー/変数名を使用して、それを壊さないでください。

ああ、不等式をテストする演算子があります:!=は、等価性テストの結果を否定する代わりに、それを使用します。あなたの将来の自己とあなたのコードを見ているすべての人は感謝します。

+0

クイック返信ありがとう – akshata

+0

私のコードを変更しました – akshata

+0

appDelegate.sb = [[appDelegate.bdgDBArr valueForKey:@ "key1"] componentsJoinedByString:@ "、"]; – akshata