MPMoviePlayerController でプロパティ controlStyle に MPMovieControlStyleNone を設定すると、参照カウントが 2 上がるのはなぜですか? また、 _player オブジェクトを解放するにはどうすればよいですか?
UIViewController を継承する Class を作成しました。
インスタンス変数
NSString* _movieFilename;
MPMoviePlayerController* _player;
実装
- (MPMoviePlayerController*)makeMoviePlayer:(NSString*)res {
NSURL* url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:res ofType:@""]];
MPMoviePlayerController* player = [[MPMoviePlayerController alloc] initWithContentURL:url];
if (url == nil) return nil;
player.controlStyle = MPMovieControlStyleNone;
return player;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[UIColor blackColor]];
_player=[self makeMoviePlayer:_movieFilename];
if(_player == nil) return;
NSLog(@"[_player retainCount]=%d", [_player retainCount]);
}
実装 1 上記の実装。実装 2 実装の 5 行目を削除します。player.controlStyle = MPMovieControlStyleNone;
結果1
[_player retainCount]=3
結果2
[_player retainCount]=1
実装 2 で _payer オブジェクトは [_player release] で解放できます。実装 1 では、retainCount は 3 です。[_player release] の実行後、retainCount は 2 です。_player オブジェクトは解放されません。keepCount が 2 増加するのはなぜですか? _player オブジェクトを解放するにはどうすればよいですか?