2012-11-09 45 views
1
@property (nonatomic, strong) NSURL * urlPath; 

self.urlPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"bark" ofType:@"caf"]]; 

運行ARC,部署目標4.3。儀器泄漏self.urlPath =行。內存泄漏 - NSString&NSURL

self.urlPath稍後會在視圖出現後設置AVSoundPlayer。目前在Soundplayer上沒有任何泄漏,只有在NSURL線上。音頻會播放,但當視圖彈出時會發生內存泄漏。

,因爲我已經在這個任何想法>現在12小時...

+0

是否使用ARC? – CodaFi

+0

是的,我正在使用ARC。 – iOSProgrammingIsFun

+0

嘗試使用'URLForResource:withExtension:'方法代替'pathForResource:',玩家也可能泄漏。 – mit3z

回答

2

似乎僅在iOS 6中成爲Core Foundation的內存泄漏。

因此提交的BUG:

錯誤ID#12699818.

0

您的播放器是否漏水,如果您的播放器泄漏,每個玩家將保持其URL和字符串對象了。

self.player = [[[AVAudioPlayer alloc] initWithContentsOfURL:pingURL error:nil] autorelease]; 

如果聲明player作爲保持特性,然後

self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:pingURL error:nil]; 

將離開引用計數爲2。

self.player = nil; 

將使1.

+0

我的播放器聲明爲: @property(nonatomic,strong)AVAudioPlayer * player; – iOSProgrammingIsFun

+0

我必須支持iOS 4.3,所以我不能在屬性聲明中使用「弱」 - 是否還有其他我應該做的事情?我很困惑,爲什麼保留計數是2後,只是一個單一的分配,雖然... – iOSProgrammingIsFun

+0

@iOSProgrammingIsFun使用'assign'而不是'weak' - 但要小心,因爲該指針不會自動設置爲'nil'當對象被釋放時。但是你確定你不想要一個「強大」的參考,你只是更正確地處理? – Tommy