我正试图在另一种方法中使用名为getTimer的方法访问NSTimer。
- (NSTimer *)getTimer{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector: @selector(produceBricks) userInfo:nil repeats:YES];
return timer;
[timer release];
}
我试图通过使用以下方法停止计时器(一种会暂停游戏的方法):
if ([getTimer.timer isValid]) {
[getTimer.timer invalidate];
}
我假设这不是正确的语法,因为它告诉我getTimer未声明。我如何访问计时器以便我可以阻止它?
答案 0 :(得分:4)
getTimer
是一种方法,而不是对象,因此您无法向其发送消息或访问属性。相反,假设该方法与调用它的方法属于同一类,您可以这样称呼它:
NSTimer *timer = [self getTimer];
if ([timer isValid]) [timer invalidate];
//...
此外,您尝试在return语句之后在getTimer方法中释放计时器。这段代码永远不会被执行(方法已经结束) - 在这种情况下这很好,因为你不应该释放计时器,它已经自动释放了。我建议您阅读有关Objective-C内存管理和命名约定的内容。
答案 1 :(得分:1)
使计时器成为实例变量,而不是在getTimer
内创建。然后它将在类中的任何地方访问,如下所示:
在MyClass.h中
NSTimer* timer;
我会实现一个startTimer和stopTimer方法。
- (void) startTimer {
timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector: @selector(produceBricks) userInfo:nil repeats:YES];
}
- (void) stopTimer {
if([timer isValid]) {
[timer invalidate];
}
}