Iphone NSTimer分配作为属性

Iphone NSTimer分配作为属性,iphone,nstimer,Iphone,Nstimer,如果我想创建一个简单的类,它有三个实例变量和方法,比如 NSInteger seconds; NSInteger minutes; NSTimer *timer; - (void)setMinutes:(NSInteger)m; - (void)setSeconds:(NSInteger)s; - (NSInteger)minutes; - (NSInteger)seconds; 我想要的是初始化一个NSTimer对象,并让它以分钟/秒倒计时。但是我不知道如何初始化

如果我想创建一个简单的类,它有三个实例变量和方法,比如

    NSInteger seconds;
    NSInteger minutes;
    NSTimer *timer;


- (void)setMinutes:(NSInteger)m;
- (void)setSeconds:(NSInteger)s;
- (NSInteger)minutes;
- (NSInteger)seconds;
我想要的是初始化一个NSTimer对象,并让它以分钟/秒倒计时。但是我不知道如何初始化计时器,如果需要的话,如何释放它(如果我有多个计时器在运行)。我知道如何使用该方法:

[NSTimer scheduledTimerWithTimeInterval:1.0
                                target:self 
                               selector:@selector(doTimer:)
                               userInfo:nil
                                repeats:YES];

我没有看到NSTimer需要“alloc”的例子,或者它是否也需要发布

scheduledTimerWithTimeInterval
返回
NSTimer
的实例。只需使用属性并重写setter即可使计时器无效

    NSTimer *timer;

@property (nonatomic, retain) NSTimer *timer;
- (void)setTimer:(NSTimer *)t;



- (void)setTimer:(NSTimer *)t {
    if (timer) {
        [timer invalidate];
        [timer release];
        timer = nil;
    }

    timer = [t retain];
}
如果您使用
self.timer
有一个指向计时器的指针,当您设置
self.timer=newTimer
时,它将保留新计时器,并使旧计时器失效并释放

需要注意的重要一点是,setter希望输入计时器是自动删除的副本。如果您计划使用已经在使用的NSTimer
scheduledTimerWithTimeInterval
方法,这将很好