Your setter should release the old value before assigning and retaining the new value. See this answer on how synthesized MRC are implemented. If you are not providing your own setter, this should not leak memory.
- (void)restartStream
{
self.streamItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:@"http://someStream.com"]];
self.streamPlayer = [AVPlayer playerWithPlayerItem:self.streamItem];
}