Цель C: постоянно вызывать функцию - PullRequest
2 голосов
/ 22 декабря 2010

Я пытаюсь сделать довольно простую игру, и я застрял. По сути, я хочу, чтобы UIImageView появлялся каждые 2 секунды. Моя проблема в том, что я не могу отслеживать общее время. Прямо сейчас у меня есть это:

NSDate *date = [NSDate date];

NSTimeInterval secondsSinceNow = [date timeIntervalSinceNow];

NSLog(@"date = %@", date);
NSLog(@"secondsSinceNow = %f", secondsSinceNow);

Это функция моей кнопки, поэтому она вызывается, когда пользователь нажимает кнопку. Он возвращает десятичное число всегда меньше 1. Я пробовал это в методе viewDidLoad, а также в его собственном методе, но ни один из них не работает.

Я думаю, что это сработало бы, если бы это был его собственный метод, который постоянно проверял, но я не знаю, как это сделать.

Короче, мне нужен таймер / счетчик, который обновляется каждую секунду.

Ответы [ 3 ]

5 голосов
/ 22 декабря 2010
@interface className
{
NSTimer * timer;
}

@property (nonatomic, retain) NSTimer * timer;

@end


@implementation className
@synthesize timer;

...

/ * фабричный метод был исправлен здесь. должен работать без предупреждений, копируя и вставляя * /

-(void) applicationDidFinishLaunching : (UIApplication *) application {
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES];

}

//define the target method

/ * метод был исправлен, потому что он нуждался в скобках вокруг NSTimer * /

-(void) targetMethod: (NSTimer *) theTimer {
NSLog(@"Me is here at 1 minute delay");
}
..
@end

взято отсюда http://www.iphonedevsdk.com/forum/iphone-sdk-development/14403-nstimer-examples.html

0 голосов
/ 22 декабря 2010

Если эти первые две строки вызываются сразу после друг друга, то это (должно) всегда быть меньше секунды. Дата создается прямо здесь, и затем сразу вызывается timeIntervalSinceNow, когда между ними происходит мало времени. Цель состоит в том, чтобы сделать дату при первом вызове, а затем вызвать timeIntervalSinceNow для этого, чтобы получить времена больше 0. Однако, это все равно не создает таймера обновления, как вы хотите.

0 голосов
/ 22 декабря 2010

Вы можете просто использовать NSTimer для вызова селектора в вашем классе с необходимым двухсекундным интервалом.

Тем не менее, вы также можете использовать CABasicAnimation для уменьшения непрозрачности UIImageView в ожидании требуемого эффекта.

...