2012-02-15 3 views
0

カスタムデリゲートクラスとカスタムオブジェクトを作成して、頻繁に作成して使用するすべてのカスタムオブジェクトとビューのフレームワークを作成しようとしています。 NSTimersがデリゲートクラスの中で正しいメソッドを呼び出そうとするときを除いて、すべてがうまくいっています。NSTimerデリゲートの選択

これは基本的な設定です。

-(void) startTimers { 
    NSTimer *timer1 = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(doSomething:) userInfo:nil repeats:YES]; 
    NSTimer *timer2 = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(doSomethingElse:) userInfo:nil repeats:YES]; 
} 

私はこのメソッドを呼び出すだけで簡単に呼び出すことができますが、この時にはセレクタとして定義したメソッドを呼び出すことはありません。デリゲートの値とは何か、デリゲートとしてどのクラスを作成しているのか、かなり確信しています。

私が書き込んでいるファイルは、@protocolタグとそのすべてを使用してデリゲートとして設定されているUIViewのサブクラスです。

タイマーを定義して正しい方法を呼び出すときに、目標として設定する必要があるものは何ですか?

編集:ここでは

は私がやっているものの例である:

ExampleView.h

#import <UIKit/UIKit.h> 

@protocol ExampleViewDelegate; 

@interface ExampleView : UIView { 
    NSTimer *timer; 
} 
-(void) initWithStuff:(id)stuff andFrame:(CGRect)frame; 
-(void) testTimer; 
@end 

@protocol ExampleViewDelegate 

-(void) someDelegateFunction; 
@end 

ExampleView.m

#import "ExampleView.h" 

@implementation ExampleView 


-(id) initWithStuff:(id)stuff andFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(testTimer) userInfo:nil repeats:YES]; 
    return self; 
} 

-(void) testTimer { 
    NSLog(@"Timer Fired"); 
} 

@end 

あなたはこれを追加した場合それは決してそのtestTimeを呼び出すことはありませんviewcontrollerにカスタムビューr関数とprint "Timer Fired"だから、私はこのタイマーのデリゲートを設定すると実際に何かに設定しているということを考えています。何か案は?

+0

あなたが定義されているstartTimers呼ばれているのですか? – sch

+0

タイマーには代理人がいません。どのような議論をしていますか?私はあなたのメソッドの名前とあなたが渡しているセレクタの間にタイプミスがあると思います。あなたはクラッシュしていますか? –

+0

編集が提出されましたので、確認してください。 – MZimmerman6

答えて

2
NSTimer *timer1 = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(doSomething:) userInfo:nil repeats:YES]; 

お知らせ方法は、 "scheduledTimerWithTimeInterval" のUIViewまたはのUIViewControllerのサブクラスで

+1

よく見つかる。それは確かに問題です。 'timerWithTimeInterval:...'は有効なメソッドですが、 'scheduledTimer ...'と同様に実行ループにタイマーを追加しません。つまり、タイマーは作成されますが何もしません。 –

+0

うわー、今はもっと愚かな気がしませんでした。そこに良い場所ビニー。以前は何度もNSTimersを使用していましたが、何らかの理由でこれを誤って定義していました。私はあなたが午前2時にプログラミングのために得るものだと思う:)。どうもありがとう! – MZimmerman6

+0

数ヶ月前とまったく同じ時間を浪費していた経験があったので私は知っていました。あなたは良い会社にいる。 – Vinnie

関連する問題