我正在使用MPMoviePlayerController播放在线视频(我正在使用ARC),这是代码:
_moviePlayer = [[ZXMPMoviePlayerController alloc] init];
_moviePlayer.view.frame = CGRectMake(0, 100, 320, 320);
_moviePlayer.controlStyle = MPMovieControlStyleNone;
[self.view addSubview:_moviePlayer.view];
NSString *sourcePathStr = @""; //video url
_moviePlayer.contentURL = [NSURL URLWithString:sourcePathStr];
_moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[_moviePlayer prepareToPlay];
[_moviePlayer play];
如果观察到_moviePlayer的重新分配,ZXMPMoviePlayerController是MPMoviePlayerController的子类。
现在我确定_moviePlayer被释放了(因为我打印了登录ZXMPMoviePlayerController的dealloc方法)我离开这个VC(VC也被解除分配了。),但我的应用程序的内存使用量仍然很高,这是一个测试演示,除电影播放器外,vc是干净的。 我认为它必须是_moviePlayer仍然在内存中的东西,比如其他东西的缓存,我不知道......
有什么想法吗?帮助...
in .h
@interface ZXMPMoviePlayerController : MPMoviePlayerController
@end
在.m #import“ZXMPMoviePlayerController.h”
@implementation ZXMPMoviePlayerController
- (void)dealloc
{
NSLog(@"%s",__FUNCTION__);
}
@end
答案 0 :(得分:2)
您好,请确保使用@autoreleasepool
释放内存包装所有代码。在dealloc你应该清理你的记忆。使用dealloc方法时,应检查是否释放所有对象以避免内存泄漏。
- (void)dealloc
{
[moviePlayer_ release];
moviePlayer_ = nil;
}
这应该如何调用视频播放器。
@autoreleasepool
{
[_moviePlayer release];
_moviePlayer = nil;
_moviePlayer = [[ZXMPMoviePlayerController alloc] init];
_moviePlayer.view.frame = CGRectMake(0, 100, 320, 320);
_moviePlayer.controlStyle = MPMovieControlStyleNone;
[self.view addSubview:_moviePlayer.view];
NSString *sourcePathStr = @""; //video url
_moviePlayer.contentURL = [NSURL URLWithString:sourcePathStr];
_moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[_moviePlayer prepareToPlay];
[_moviePlayer play];
}
答案 1 :(得分:0)
取消选中Edit Scheme下的Enable Zombie Objects选项。然后再试一次。