だからこれは私が持っているコードです:ボタンを押すだけでなぜサウンドが再生されないのですか?
:
-(void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
[self dismissModalViewControllerAnimated:YES];
self.selectedSong = mediaItemCollection;
NSLog(@"Selected song: %@", self.selectedSong);
}
後で:次に
@interface RewriteViewController : UIViewController <MPMediaPickerControllerDelegate> {
MPMediaItemCollection *selectedSong;
}
@property(nonatomic,retain) MPMusicPlayerController *musicPlayer;
@property(nonatomic,retain) MPMediaItemCollection *selectedSong;
MPMediaItemCollection *selectedSong;
:
-(void)waitUntilSpeechIsDone {
NSLog(@"Test");
if ([audio isEqualToString:@"Music"]) {
if ([musicWhenToStart isEqualToString:@"Before"]) {
NSLog(@"Test");
NSLog(@"Selected song: %@", self.selectedSong);
[self.musicPlayer stop];
[self.musicPlayer setQueueWithItemCollection:self.selectedSong];
[self.musicPlayer play];
}
}
}
それは次のように定義されています両方とも.mファイルで合成されます。
ですから、上半期の問題はありません。 NSLogは "Selected song:"のようなものを返します。そして、NSLogは "Test"を返します。何らかの理由で次の行にクラッシュした場合に備えて、そのことが分かります。次に、次の行に移動すると、「Selected song :(null)」が返されます。
なぜでしょうか?
EDIT:どちらもdeallocで解放されます。
可能であれば、クラッシュのスタックトレースを含めてください。 – raidfive
クラッシュはありません。これはnullとして返され、オーディオは再生されません。 – Andrew