2011-12-27 41 views
0

我開始在ios-5中開發一個項目,我在我的應用程序中創建了數據庫。 這裏我在appDelegate中創建bdgDBArr,其中包含值93,55,68,95,45 ... 我想創建字符串,如badge_id = @「93,55,68,95,45」 此處appDelegate.sb是NSString型和SB1是NSMutableString不釋放NSMutableString

這是我的代碼

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; 

該代碼可以正常使用,並得到輸出93,55,68,45 但同時我的NSLog得到這個錯誤

wait_fences: failed to receive reply: 10004003 

有什麼想法?

+0

您是否打開了ARC,在這種情況下您不需要釋放該對象。 – rckoenes 2011-12-27 08:28:37

+1

@rckoenes看起來像運行時異常不是編譯錯誤。 ARC在編譯時完成。 – 0x8badf00d 2011-12-27 08:37:56

+0

@ 0x8badf00d你說得對。 – rckoenes 2011-12-27 08:52:29

回答

0

只是嘗試:使用autorelease而不是release。它會改變什麼嗎?

是您的財產appDelegate.sb在應用程序委託中使用@syntetise setter/getter,還是您使用自己的代碼設置?在這種情況下請發佈您的代碼。

2

我無法幫助解決您的問題,但您可以 - 也應該 - 將您的代碼縮減爲一行:appDelegate.sb = [appDelegate.bdgDBArr componentsJoinedByString:@","];,這樣做更具表現力,而且做得正確。

雖然我們在那裏:
Objective-C使編寫可以像散文一樣閱讀的代碼變得相當容易。不要通過使用成員/變量名稱(如sbbdgDBArr)來解決此問題。

哦,有一個運算符來測試不等式:!=使用它來代替否定等式測試的結果。你將來的自己和每個看着你的代碼的人都會很感激。

+0

感謝您的快速回復 – akshata 2011-12-27 09:18:33

+0

我剛修改我的代碼 – akshata 2011-12-27 09:19:09

+0

appDelegate.sb = [[appDelegate.bdgDBArr valueForKey:@「key1」] componentsJoinedByString:@「,」]; – akshata 2011-12-27 09:19:17