[英]Not release NSMutableString
我開始在ios-5中開發一個項目,我在我的應用程序中創建了數據庫。 在這里,我在appDelegate中創建了包含93,55,68,95,45之類的值的bdgDBArr ...我想創建像badge_id = @“93,55,68,95,45”這樣的字符串,這里appDelegate.sb是NSString
類型, sb1是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
有任何想法嗎?
我無法解決您的問題,但您可以 - 而且應該 - 將您的代碼減少到一行: appDelegate.sb = [appDelegate.bdgDBArr componentsJoinedByString:@","];
這是更具表現力和正確的事情。
而我們在那里:
Objective-C使得編寫可以像散文一樣閱讀的代碼變得相當容易。 不要使用sb
或bdgDBArr
等成員/變量名來破壞它。
哦,有一個運算符來測試不等式: !=
使用它而不是否定相等測試的結果。 你未來的自我和每一個看你代碼的人都會感激不盡。
只是為了嘗試:使用autorelease而不是release。 它改變了什么嗎?
是您的屬性appDelegate.sb在app委托中使用@syntetise setter / getter,或者您是否使用自己的代碼作為setter? 在這種情況下,請發布您的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.