[英]MPMoviePlayerController released, but memory usage still high
I'm using MPMoviePlayerController play online video (I'm using ARC), here's the code: 我正在使用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];
ZXMPMoviePlayerController is a subclass of MPMoviePlayerController in case of observing the deallocation of _moviePlayer. 如果观察到_moviePlayer的重新分配,则ZXMPMoviePlayerController是MPMoviePlayerController的子类。
Now I'm sure _moviePlayer is deallocated(because I printed log in dealloc method of ZXMPMoviePlayerController) after I leave this VC (VC is deallocated also.), but the memory usage of my app is still high, This is a test demo, the vc is clean except the movieplayer. 现在,我确定_moviePlayer被释放了(因为我在退出该VC后也打印了ZXMPMoviePlayerController的dealloc方法中的日志)(VC也被释放了),但是我的应用程序的内存使用率仍然很高,这是一个测试演示, vc是干净的,除了movieplayer。 I think it must be something of _moviePlayer is still in memory, like cache of something else, I have no idea...
我认为一定是_moviePlayer仍在内存中,就像其他内容的缓存一样,我不知道...
Any ideas? 有任何想法吗? Help...
救命...
in .h 在.h中
@interface ZXMPMoviePlayerController : MPMoviePlayerController
@end
in .m #import "ZXMPMoviePlayerController.h" 在.m #import“ ZXMPMoviePlayerController.h”中
@implementation ZXMPMoviePlayerController
- (void)dealloc
{
NSLog(@"%s",__FUNCTION__);
}
@end
Hi to be sure that you release memory wrap all code with @autoreleasepool
. 您好,请确保您释放内存,
@autoreleasepool
使用@autoreleasepool
将所有代码包装@autoreleasepool
。 In the dealloc you should clean your memory. 在dealloc中,您应该清理内存。 When you are using dealloc method you should check if all object are release to avoid memory leaks.
使用dealloc方法时,应检查是否释放了所有对象,以避免内存泄漏。
- (void)dealloc
{
[moviePlayer_ release];
moviePlayer_ = nil;
}
This how you should call video player. 这就是您应该如何调用视频播放器。
@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];
}
Uncheck Enable Zombie Objects option under Edit Scheme. 取消选中“编辑方案”下的“启用僵尸对象”选项。 And try again.
然后再试一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.