2012-07-03 62 views
1

我想構造一個字符串對象EXC_BAD_ACCESS在一個簡單的代碼

for (int n=0; n<[friends count]; n++) { 
    User* friend = [friends objectAtIndex:n]; 
    if (n>=[friends count]-1) { 
     NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"}", [friend uid]]; 
     NSString* sf2 = [[NSString alloc]init]; 
     sf2= [sf stringByAppendingString:param]; 
     [sf release]; 
     sf = [[NSString alloc]initWithString:sf2]; 
     [sf2 release]; 
     [param release]; 
    }else{ 
     NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"},", [friend uid]]; 

     NSString* sf2 = [[NSString alloc]init]; 
     sf2= [sf stringByAppendingString:param]; 
     [sf release]; 
     sf = [[NSString alloc]initWithString:sf2]; 
     [sf2 release]; 
     [param release]; 
    } 

} 

我想知道我在做什麼錯的陣列。 在此先感謝!

+0

你能說出錯的地方嗎? – Pfitz

回答

1

參數是自動釋放的對象,所以你不應該將其釋放。

編輯: //在這裏初始化sf。

for (int n=0; n<[friends count]; n++) { 
    User* friend = [friends objectAtIndex:n]; 
    if (n>=[friends count]-1) { 
     NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"}", [friend uid]]; 
     sf = [sf stringByAppendingString:param]; 
    }else{ 
     NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"},", [friend uid]]; 

     sf = [sf stringByAppendingString:param]; 
    } 

} 
+0

我用這個,發生錯誤 –

+0

我解決了這個問題,在代碼的末尾添加[sf retain]。謝謝!!!! –

+0

如果初始化sf,則不必保留它。反正我很高興你的問題解決了。 –

0

使用此代碼....評論[sf release]和[param release];

for (int n=0; n<[friends count]; n++) { 
User* friend = [friends objectAtIndex:n]; 
if (n>=[friends count]-1) { 
    NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"}", [friend uid]]; 
    NSString* sf2 = [[NSString alloc]init]; 
    sf2= [sf stringByAppendingString:param]; 
    //[sf release]; 
    sf = [[NSString alloc]initWithString:sf2]; 
    [sf2 release]; 
    //[param release]; 
}else{ 
    NSString* param = [NSString stringWithFormat:@"{\"target_id\":\"dummy(%d)\"},", [friend uid]]; 

    NSString* sf2 = [[NSString alloc]init]; 
    sf2= [sf stringByAppendingString:param]; 
    //[sf release]; 
    sf = [[NSString alloc]initWithString:sf2]; 
    [sf2 release]; 
    //[param release]; 
} 

} 

可能,這將幫助你

+0

我評論了這一行,併發生錯誤 –

+0

哪種類型的錯誤? – Abhishek