我有下面的代碼來創建一個NSString來包含文本文件的主體,然後將其轉換爲NSData並將其輸出到文件。NSString和NSData內存管理
NSString *particleString = [[NSString alloc] initWithFormat:@"%@", @"This is the body of my file"];
NSData *metaVals = [particleString dataUsingEncoding:NSISOLatin1StringEncoding];
既然我已經用ALLOC創建particleString,我想我需要釋放它。我已經完成其轉換爲NSData的後,因此我加
[particleString release];
但我的應用程序崩潰,當我加入這行。但是,當我刪除用於創建metaVals的行時,我可以放心地釋放它。
任何人都可以解釋爲什麼傳遞給NSData阻止我釋放它嗎?我相信我自己擁有了particleString,發生了什麼?
你的應用程序崩潰的行是什麼? – Vladimir 2010-07-28 11:36:19
它在達到發行版時崩潰。我忘記補充說,釋放particleString之前,我通過編寫修改它: particleString = [particleString stringByAppendingFormat:@「%@」,@「Some other string」]; 然後我釋放它。所以我的代碼是這樣的: NSString * particleString = [[NSString alloc] initWithFormat:@「%@」,@「這是我的文件的主體」]; particleString = [particleString stringByAppendingFormat:@「%@」,@「Some other string」]; NSData * metaVals = [particleString dataUsingEncoding:NSISOLatin1StringEncoding]; [particleString release]; – ar106 2010-07-28 12:02:05
你可以編輯你的問題,並添加你的評論的內容,因爲你的評論是能夠回答這個問題的首要重要。注意已經給出的兩個答案都是正確的。 – JeremyP 2010-07-28 13:08:38