簡體   English   中英

我應該在分配給保留屬性的自動釋放對象上調用釋放,然后再重新分配它嗎?

[英]Should I call release on an autorelease object assigned to a retained property before reassigning it?

在此仍未清除%100。 當AVPlayer連接中斷時,可靠地重新啟動它的唯一方法是重新創建對象。 使用便利方法創建它們時,它們會自動發布,但屬性設置器應保留它們。 在重新分配它們之前,我應該釋放它們嗎? 當我這樣做的時候,我得到了隨機的例外。 沒有發布,它不會崩潰,但是我很確定那是一個泄漏???

@interface
@property (retain, nonatomic) AVPlayerItem *streamItem;
@property (retain, nonatomic) AVPlayer *streamPlayer;

@implementation

- (void)restartStream
{
    //[self.streamItem release]; // ???????
    //[self.streamPlayer release]; // ???????
    self.streamItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://someStream.com"]];
    self.streamPlayer = [AVPlayer playerWithPlayerItem:self.streamItem];
}

您的設置員應在分配和保留新值之前釋放舊值。 有關如何實現綜合MRC的信息,請參見此答案 如果您不提供自己的設置器,則不會泄漏內存。

- (void)restartStream
{
    self.streamItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://someStream.com"]];
    self.streamPlayer = [AVPlayer playerWithPlayerItem:self.streamItem];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM