簡體   English   中英

不釋放NSMutableString

[英]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使得編寫可以像散文一樣閱讀的代碼變得相當容易。 不要使用sbbdgDBArr等成員/變量名來破壞它。

哦,有一個運算符來測試不等式: !=使用它而不是否定相等測試的結果。 你未來的自我和每一個看你代碼的人都會感激不盡。

只是為了嘗試:使用autorelease而不是release。 它改變了什么嗎?

是您的屬性appDelegate.sb在app委托中使用@syntetise setter / getter,或者您是否使用自己的代碼作為setter? 在這種情況下,請發布您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM