這是一個示例代碼,其中只有「string」對象被釋放。爲什麼我不必釋放這些對象?
NSString *nameOfFile = ... ;
NSError *error;
NSString *string = [[NSString alloc] initWithContentsOfFile:nameOfFile encoding:NSUTF8StringEncoding error:&error];
if (string == nil) {
// handle error
}
[string release];
我明白爲什麼錯誤對象沒有被釋放。這是因爲這裏的方法沒有使用「new」或「alloc」方法創建該錯誤對象。相反,這個是通過引用返回的,所以initWithContentsOfFile方法負責這個內存。但是,nameOfFile對象呢?他們爲什麼不釋放它?它不是通過引用返回...?
您需要用兩個「F」字在十六進制值,或十進制應該是2^23 - 1,而不是2^31 - 1。 – paxdiablo 2009-04-26 00:13:28