2011-02-04 24 views
0

だからこれは私が持っているコードです:ボタンを押すだけでなぜサウンドが再生されないのですか?

-(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で解放されます。

+0

可能であれば、クラッシュのスタックトレースを含めてください。 – raidfive

+0

クラッシュはありません。これはnullとして返され、オーディオは再生されません。 – Andrew

答えて

0

インターフェイスファイルを確認すると、MPMediaItemCollection *selectedSong;が2回宣言されているように見えます。/これは質問を投稿する際にタイプミスがあったのかどうかはわかりませんが、それは関係があるかもしれません。あなたはクラッシュする可能性が最も高い可能性がある場合は、selectedSongがリリースされていることが予想されます。

+0

私は最後のものをコメントアウトしました。それでもnullとして返されます。 – Andrew

+0

あなたは 'selectedSong'を公開していないか、アプリケーション内の他のどこにでも置くことができますか?これはすべて同じクラス内のものですか? 'RewriteViewController' – raidfive

+0

このアプリには、次のコードを実行するオプションもありますが、常に1かそれ以外のコードです。このように問題を抱えてはいけません。それはRewriteViewControllerにあります。 \t 'if([musicWhenToStart isEqualToString:@"スタート "]){ \t \t [musicPlayer stop]; \t \t \t NSLog(@ "選択した曲:%@"、selectedSong); \t \t [musicPlayer setQueueWithItemCollection:self.selectedSong]; \t \t [musicPlayer play]; \t \t} – Andrew

関連する問題