NSTimer не работает - PullRequest
       1

NSTimer не работает

2 голосов
/ 18 февраля 2012

Я ожидаю, что этот код будет отображать «Новая версия» каждые 3 секунды, но это не так.

Car.h

#import <Foundation/Foundation.h>

@interface Car : NSObject


-(void)displayVersion;
@end 

Car.m

#import "Car.h"

@implementation Car

-(void)displayVersion
{
    NSLog(@"New version");
}

@end

main.c

#import <Foundation/Foundation.h>
#import "Car.h"

int main (int argc, const char * argv[])
{
    @autoreleasepool 
    {
        Car *ford = [[Car alloc]init];

        [NSTimer scheduledTimerWithTimeInterval:3 
                                         target:ford
                                         selector:@selector(displayVersion) 
                                         userInfo:nil 
                                         repeats:YES];
    }
    return 0;
}

Что здесь не так?

PS: я ненавижу, что «Ваш пост не имеет большого контекста для объяснения разделов кода; пожалуйста, объясните ваш сценарий более четко»

Я думаю, что код - лучшее объяснение проблемы!

1 Ответ

5 голосов
/ 18 февраля 2012

NSTimer использует работающий NSRunLoop. Ваша программа завершает работу сразу же после того, как вы создадите и запланируете таймер, и NSRunLoop никогда не будет установлен в любом случае. Как правило, в приложении Какао вызов NSApplicationMain() в main() устанавливает основной цикл выполнения и начинает его «вращать». Вы должны создать новый проект, используя шаблон приложения Какао по умолчанию в XCode, и создать свой таймер в методе -(void)applicationDidFinishLaunching: NSApplicationDelegate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...