2014-12-12 3 views
1

Вот мой кодЯ получаю ошибку SIGABRT при воспроизведении фоновой музыки под viewDidLoad

.h файл

#import <AVFoundation/AVFoundation.h> 

@interface ViewController : UIViewController { 

AVAudioPlayer *theAudio; 

} 


.m file 

    -(void)viewDidLoad { 

    [self backgroundMusic]; 

    } 

    -(void)backgroundMusic { 

    AVAudioSession *session = [AVAudioSession sharedInstance]; 
    [session setActive:YES error:nil]; 
    [session setCategory:AVAudioSessionCategoryPlayback error:nil]; 

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"FirstQuestionGameSoundtrack" ofType:@"m4a"]; 
    NSURL *url = [[NSURL alloc] initFileURLWithPath:path]; 

    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
    [theAudio prepareToPlay]; 
    [theAudio setVolume:1]; 
    theAudio.numberOfLoops = -1; 

    [theAudio play]; 


} 

Это мой код и я получаю Thread 1: ошибка SIGABRT сигнала.

Если есть лучший способ играть в фоновую музыку в приложении под управлением viewController, я хотел бы знать, как это сделать. Спасибо!

Это ошибка

int main(int argc, char * argv[]) { 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); //Thread 1: signal SIGABRT error.  
} 
} 

журнала консоли

libsystem_kernel.dylib`__pthread_kill: 
0x3a364df4: mov r12, #0x148 
0x3a364df8: svc #0x80 
0x3a364dfc: blo 0x3a364e14    ; __pthread_kill + 32 //Thread 1: SIGABRT 
0x3a364e00: ldr r12, [pc, #4]    ; __pthread_kill + 24 
0x3a364e04: ldr r12, [pc, r12] 
0x3a364e08: b  0x3a364e10    ; __pthread_kill + 28 
0x3a364e0c: rsbeq r5, lr, #0x80000001 
0x3a364e10: bx  r12 
0x3a364e14: bx  lr 



*** ImageIO - could not find ColorSync function 'ColorSyncProfileCreateSanitizedCopy' 
2014-12-11 23:59:39.500 The Wild Game[3413:563583] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter' 
*** First throw call stack: 
(0x2c275c1f 0x39d1ec8b 0x2c275b65 0x2cf0ae6d 0xfd9eb 0xfd7af 0x2f734f8f 0x2f734cfd 0x2f73abcb 0x2f73863d 0x2f7a283d 0x2f99468b 0x2f996afb 0x2f9a1379 0x2f995387 0x329d90e9 0x2c23c39d 0x2c23b661 0x2c239de3 0x2c188211 0x2c188023 0x2f7993ef 0x2f7941d1 0xfe61d 0x3a29eaaf) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+1

Ваш код выглядит нормально. Можете ли вы опубликовать журнал консоли для стеков событий? – Anon

+0

Я добавил его к моему вопросу. Надеюсь, вы можете это увидеть @RichaSharma –

+0

Хорошо, я изменил его @RichaSharma –

ответ

2

Ваш трассировки стека для Крушения говорит, что вы передаете nil в качестве параметра в -[NSURL initFileURLWithPath:] метода. Вот почему он рушится.

Сразу после

NSString *path = [[NSBundle mainBundle] pathForResource:@"FirstQuestionGameSoundtrack" ofType:@"m4a"];` 

Попробуйте напечатать как

NSLog(@"%@", path); 

Вы получаете его nil

Убедитесь, что вы добавить файл в проект, и он появляется в Copy Bundle Resources построить фазу цели вашего исполняемого файла в Xcode.

Дайте мне знать, если это поможет.

+1

Я собирался указать, что вы только что отредактировали несколько минут назад. :) – viral

+0

@RichaSharma Эй, что мне сменить? И имеет значение длина музыкального файла? –

+0

@CyrilIvarGarcia Он возвращает 'nil'. Если ДА, то вы должны убедиться, что файл ДО существует в Bundle Resources. – Anon

Смежные вопросы