[英]Should I retain an autoreleased object when assigned to a retained property?
[英]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.