Stoppuhr

  • Guten Morgen!

    Habe mir ein paar Codeschnipsel für eine Stoppuhr zusammenkopiert.

    In meiner .xib habe ich ein Label.

    In meiner .h:

    Quellcode

    1. IBOutlet UILabel *stoppuhrZeitLabel;
    2. NSTimer *Timer;


    Meine .m:

    Quellcode

    1. -(void)timerstarten
    2. {
    3. Timer = [NSTimer scheduledTimerWithTimeInterval: 1 target:self
    4. selector:@selector(aktualisieren:) userInfo:nil repeats:YES];
    5. meinestartZeit = [[NSDate date] retain];
    6. [Timer fire];
    7. }
    8. - (void)aktualisieren:(NSTimer *)Timer
    9. {
    10. NSTimeInterval myInterval = -[meinestartZeit timeIntervalSinceNow];
    11. int sekunden = ((int) myInterval) % 60;
    12. int minuten = ((int) (myInterval - sekunden) / 60) % 60;
    13. stoppuhrZeitLabel.text = [NSString stringWithFormat:@ "%.2d:%.2d", minuten, sekunden];
    14. }
    Alles anzeigen


    Leider bekomme ich beim kompilieren den Fehler "meinestartZeit undeclared".
    Klar, denn es fehlt der Eintrag in der .h für meinestartZeit.
    Was muss ich tun?

    Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AR.DDev ()

  • Aber wenn ich das zufällig hier lese, würde ich gerne eine Frage dran hängen,
    da ich gerade etwas ähnliches treibe.

    AR.DDev schrieb:

    Timer = [NSTimer scheduledTimerWithTimeInterval: 1 target:self selector:@selector(aktualisieren:) userInfo:nil repeats:YES];


    Scheint sinnvoll zu sein. Ich habe folgendes für einen Cowntdown Benutzt und es funktioniert auch:

    Quellcode

    1. [self performSelector:@selector(countDown) withObject:self afterDelay:1.0];


    Ich frage mich aber jetzt welche Variante sinnvoller ist und wo die Nachteile liegen könnten.
    Hat jemand nen schnellen Erfahrungsbericht?
    dealloc {
    [myLeak retain];
    }
  • The-Ferryman schrieb:

    Aber wenn ich das zufällig hier lese, würde ich gerne eine Frage dran hängen,
    da ich gerade etwas ähnliches treibe.

    AR.DDev schrieb:

    Timer = [NSTimer scheduledTimerWithTimeInterval: 1 target:self selector:@selector(aktualisieren:) userInfo:nil repeats:YES];


    Scheint sinnvoll zu sein. Ich habe folgendes für einen Cowntdown Benutzt und es funktioniert auch:

    Quellcode

    1. [self performSelector:@selector(countDown) withObject:self afterDelay:1.0];


    Ich frage mich aber jetzt welche Variante sinnvoller ist und wo die Nachteile liegen könnten.
    Hat jemand nen schnellen Erfahrungsbericht?

    Beides ist so ziemlich dasselbe.

    Allerdings dürfte es sich auch auf dem iPhone, iPad so verhalten, dass beide Timer im Default-Mode der Runloop landen, was dann bei bestimmten Bereichen zu Problemen führen kann. Dazu gibt es mehr in der Doku und im Band II.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?