Цель C: вызвать переменную из другого метода - PullRequest
1 голос
/ 15 января 2011

Я пытаюсь получить доступ к NSTimer в методе с именем getTimer в другом методе.

- (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 не объявлен. Как мне получить доступ к таймеру, чтобы я мог его остановить?

Ответы [ 2 ]

4 голосов
/ 15 января 2011

getTimer - это метод, а не объект, поэтому вы не можете отправлять ему сообщения или получать доступ к свойствам. Скорее, предполагая, что метод находится в том же классе, что и вызывающий его, вы бы назвали его так:

NSTimer *timer = [self getTimer];
if ([timer isValid]) [timer invalidate];
//...

Кроме того, вы пытаетесь освободить свой таймер в методе getTimer после оператора return. Этот код никогда не будет выполнен (метод уже завершен) - что хорошо в этом случае, потому что вы не должны освобождать таймер, он уже автоматически выпущен. Я бы порекомендовал вам прочитать кое-что об Objective-C и соглашениях об именах.

1 голос
/ 15 января 2011

Сделайте таймер переменной экземпляра вместо создания внутри 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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...