1

我想知道你们中是否有人遇到过类似的问题,当然碰巧找到了合适或不那么合适(但有效)的解决方案/解决方法。

我正在使用 MPMoviePlayerViewController 并尝试将 Swipe-Gesture Recognizers 添加到 MPMoviePlayerViewControllers 视图中。

moviePlayerViewController = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL URLWithString:currentChannel.StreamURI]];
[moviePlayerViewController.movi​​ePlayer setControlStyle:MPMovieControlStyleNone];
moviePlayerViewController.movi​​ePlayer.movi​​eSourceType = MPMovieSourceTypeStreaming;
moviePlayerViewController.movi​​ePlayer.shouldAutoplay = YES;
[moviePlayerViewController.movi​​ePlayer setScalingMode: MPMovieScalingModeAspectFit];

UISwipeGestureRecognizer *swipeGestureRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(previousChannel)];
swipeGestureRight.direction = UISwipeGestureRecognizerDirectionRight;
[myMoviePlayerViewController.view addGestureRecognizer:swipeGestureRight];
[self.view addSubview:moviePlayerViewController.view];

无论如何,它“有点工作”但是当我通过在正在运行的电影播放器​​实例(无论是在模拟器中还是在设备上)上做手势来测试整个事情时,应用程序崩溃并且控制台状态

** -[CFRunLoopTimer invalidate]: message sent to deallocated instance 0xf074bb0

你们中有人对这个话题有想法吗?

4

1 回答 1

1

似乎 iOS 正在释放您的MPMoviePlayerViewController对象,然后稍后向它发送消息。我建议让实例成为你的类的成员,然后为它实例化一个属性,例如:

@property (nonatomic, retain) MPMoviePlayerViewController *moviePlayerViewController;

...连同相应的@synthesize声明你的类的实现文件。分配对象时,您应该这样做:

  self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:@"yourUrl"] autorelease];

nil最后,通过在您的dealloc方法中设置它来释放对象。

于 2010-10-07T13:28:29.573 回答