在下面的方法中,我不確定爲什麼釋放其中一個數組會導致異常。我可以看到的唯一原因是,如果componentsSeparatedByString
返回一個自動發佈的數組,但我看不到文檔中提到它。NSString componentsSeparatedByString:是否返回autoreleased數組?
-(void)addRow:(NSString *)stringWithNumbers;
{
NSArray *numbers = [stringWithNumbers componentsSeparatedByString:@" "];
NSMutableArray *row = [[NSMutableArray alloc] initWithCapacity:[numbers count]];
for (NSString *number in numbers) {
Number *n = [[Number alloc] initWithNumber:number];
[row addObject:n];
[n release];
}
[rows addObject:row];
[row release];
// [numbers release]; <-- leads to exception
}
任何人都可以確認數組是否autoreleased?如果是這樣,我怎麼知道/爲什麼我應該知道?
是否有可能通過代碼檢查對象的任何一個實例是否是自動釋放的?
-1 false。 「malloc」專門分配內存。 `copy`不保證返回一個新的對象。 `保留`不分配新的內存。然而在所有這些情況下,你都擁有記憶,必須放棄記憶。 – 2010-11-25 06:12:24