カスタムデリゲートクラスとカスタムオブジェクトを作成して、頻繁に作成して使用するすべてのカスタムオブジェクトとビューのフレームワークを作成しようとしています。 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"だから、私はこのタイマーのデリゲートを設定すると実際に何かに設定しているということを考えています。何か案は?
あなたが定義されているstartTimers呼ばれているのですか? – sch
タイマーには代理人がいません。どのような議論をしていますか?私はあなたのメソッドの名前とあなたが渡しているセレクタの間にタイプミスがあると思います。あなたはクラッシュしていますか? –
編集が提出されましたので、確認してください。 – MZimmerman6