2012-02-22 20 views
1

私は非常に単純なメソッドを別のファイルに入れています。これは整数をとり、case selectでそれを調べ、それに対応するNSURLポインタを返します。それは、このメソッドを持っていますメソッドが呼び出されていません

#import <Foundation/Foundation.h> 

@interface ChangeCurrentScene : NSObject 
{ 
    NSString *filePath; 
    NSURL *url; 
    int currentScene; 
} 

- (NSURL *)changeSceneURL:(int)toDesiredScene; 

@end 

私は私が外からそれを呼び出すようになってるか100%わからないんだけど、私は間違いなく動作します私のストーリーボードにフックアップボタンを、持っている、と私は使用していますこの行は、それを呼び出すために:

nextURL = [sceneChanger changeSceneURL:1]; 

をこのヘッダファイルから:

@interface MSViewController : UIViewController <AVAudioPlayerDelegate> { 

    BOOL userInputAvailable; 
    int currentScene; 
    NSURL *nextURL; 
    ChangeCurrentScene *sceneChanger; 

} 

@property (strong) AVAudioPlayer *menuPlayer; 
@property (strong, nonatomic) IBOutlet UILabel *userChoiceLabel; 
@property (strong, nonatomic) IBOutlet UIImageView *nowPlayingIcon; 


- (BOOL) playScene : (NSURL *)fileToBePlayed; 

@end 

は私がchangeSceneURLの最初の行にブレークポイントを入れている:toDesiredSceneクラスが、それは全く呼び出されません。クラッシュは発生しませんが、コールはありません。まず、呼び出されたメソッドからの戻り値を使用する正しい方法ですか? nextURLはNSURLオブジェクトであり、返された値をその中に格納します。第二に、メソッドが全く呼び出されない理由は何でしょうか?私は本当にここで困惑していますが、私はそれが盲目的に単純なものだと確信しています。

ありがとうございました!

+0

を、あなたは名前sceneChangerを持つオブジェクトのヘッダファイルを表示することができますか?このオブジェクトは、メソッドchangeSceneURL:がある場所にある必要があります。しかし何か他のことが起こっている可能性がありますので、元の質問にヘッダファイル全体を追加してください。 – Jim

+1

'nextURL ='行にブレークポイントを置き、sceneChangerの値を確認してください。おそらく無しです。 – jrturton

答えて

1

ChechそのsceneChangernilではありません。 nilにメッセージを送信できますが、このメソッドは呼び出されません。

編集あなたはどこかにこのようなsceneChangerを初期化する必要があります。

sceneChanger = [[ChangeCurrentScene alloc] init]; 
+0

はい、それはゼロです。私はgdbで "po sceneChanger"とテストしました。どのように値を割り当てるのですか?それにNSURLを割り当てる必要がありますか、またはintですか?それは方法です、私は方法が価値を持っていたことを知らなかった。 – Luke

+0

@lukech - いいえ、 'sceneChanger'はオブジェクトで、 'ChangeCurrentScene'のインスタンスです。 – sch

関連する問題