2011-05-30 56 views
0

我應該在下面的代碼中釋放NSBundle嗎? NSURL也應該釋放? 我很困惑。我應該在聲音中釋放NSBundle嗎?

NSBundle *mainBundle = [NSBundle mainBundle]; 
NSError *error; 
NSURL  *audioURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"count_in" ofType: @"mp3"]]; 
AVAudioPlayer *player1 = [(AVAudioPlayer*) [AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error]; 
self.player = player1; 
[self.player play]; 
[player1 release]; 
+0

什麼是創建和一個錯誤的對象傳遞,如果你不執行任何錯誤處理的點蘋果的文章? – Abizern 2011-05-30 17:18:29

回答

5

你不應該釋放NSBundleNSURL實例,因爲你沒有alloced這些。

從蘋果文檔。

你把一個對象的所有權,如果你使用它的 名稱以「黃金」的方法創建它,「新」, 「複製」,或「mutableCopy」(例如, ALLOC,NEWOBJECT ,或mutableCopy)或 (如果您向其發送保留消息)。

您使用release或autorelease放棄對象的所有權。 自動釋放只是意味着「在未來發送釋放消息 」(具體: 當使用自動釋放池 接收漏極消息理解 時,這將是,請參見「自動釋放 池」)。

我強烈建議您清除您的內存管理概念。

閱讀 Memory Management Rules

+0

它需要太多的內存:( – 2011-05-30 17:05:28

+0

@Umair_uas,你爲什麼擔心內存?你是否得到內存警告? – 2011-05-30 17:08:10

+0

NSBundle是一個單身人士,不應占用太多的內存,如果這樣做,你做錯了。 – Moshe 2011-05-30 17:11:52

相關問題