如果我想创建一个包含三个实例变量和方法的简单类,比如
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”的示例,或者是否需要发布它。
答案 0 :(得分:2)
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
方法,那就没关系。