NSTimer代表选择

时间:2012-02-15 06:38:55

标签: iphone ios ios5 delegates nstimer

我正在尝试通过创建自定义委托类和自定义对象来为我创建和使用的所有自定义对象和视图创建框架。除了试图让NSTimers在委托类中调用正确的方法之外,一切都很顺利。

这是基本设置。

-(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];
}

我可以轻松地调用此方法等等,但是当这次触发时它不会调用我定义为选择器的方法。我很确定它与委托值以及它作为委托的类有关。

注意我写的文件是UIView的子类,它被设置为使用@protocol标签的委托,所有这些。

在定义我的计时器以让他们调用正确的方法时,我应该将目标设置为什么。

修改

这是我正在做的一个例子:

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

如果你将这个自定义视图添加到一个viewcontroller中它永远不会调用那个testTimer函数并打印“Timer Fired”所以​​我想的是当我为这个计时器设置委托时,它实际上是将它设置为其他东西。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

请注意,该方法名为“scheduledTimerWithTimeInterval”