У меня есть firstviewcontroller, где я играю случайное видео из словаря, содержащего URL. В первый раз, когда у меня все хорошо, мое видео воспроизводится, когда заканчивается первое видео, и я снова вызываю свой playmovieaturl, у меня не получается набрать
MPMoviePlayerViewController *temp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
Получение exec_bad_access. Также я не получаю никаких прикосновений. В отладке у меня есть правильный путь, прежде чем я попытаюсь сделать мой фильм-плеер
код здесь в patesbin http://pastebin.com/mHpANBq3
также почтовый индекс ниже
.h
//
// FirstViewController.h
// MidStates
//
//
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface FirstViewController : UIViewController {
NSArray *vidArray;
NSMutableDictionary *vidDic;
MPMoviePlayerViewController *mvc;
}
@property (nonatomic, retain) NSArray *vidArray;
@property (nonatomic, retain) NSMutableDictionary *vidDic;
@property (nonatomic, retain) MPMoviePlayerViewController *mvc;
-(void)playMovieAtURL;
-(void)loadArray;
-(void)reset;
@end
.m
//
// FirstViewController.m
// MidStates
//
//
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize vidArray, vidDic, mvc;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[self loadArray];
[super viewDidLoad];
}
-(void)loadArray{
NSMutableDictionary *tempDic = [NSMutableDictionary new];
//Trial dictionary will be loaded with multiple values at some point
[tempDic setObject:@"mp4" forKey:@"euromount_high_res"];
self.vidDic = tempDic;
NSArray *tempArray = [tempDic allKeys];
self.vidArray = tempArray;
[tempDic release];
[tempArray release];
[self playMovieAtURL];
}
-(void) playMovieAtURL
{
int rand = arc4random() % [self.vidArray count];
NSString *key = [self.vidArray objectAtIndex:rand];
NSString *path = [[NSBundle mainBundle] pathForResource:key ofType:[self.vidDic valueForKey:key]];
MPMoviePlayerViewController *temp = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
temp.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
temp.moviePlayer.shouldAutoplay = TRUE;
temp.moviePlayer.controlStyle = MPMovieControlStyleNone;
// Register for the playback finished notification.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myMovieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:[temp moviePlayer]];
self.mvc = temp;
[temp release];
[self presentModalViewController:self.mvc animated:YES];
// Movie playback is asynchronous, so this method returns immediately.
[self.mvc.moviePlayer play];
}
// When the movie is done,release the controller.
-(void)myMovieFinishedCallback:(NSNotification*)aNotification
{
MPMoviePlayerController* theMovie=[aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.mvc.moviePlayer];
// Release the movie instance created in playMovieAtURL
[theMovie release];
[self loadArray];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//implement switch to second view of tabbarviewcontroller
}
-(void)reset{
[self.mvc release];
self.mvc = nil;
[self loadArray];
}
- (void)dealloc
{
[super dealloc];
}
@end