mehr fragen zur analoguhr

  • schaetze das ist ne instansvariable. in MyView.h steht NSTimer *timer;.

    aber ich kann mir nicht vorstellen dass das einen unterschied macht, weil wenn ich den aufruf mit initWithFireDate auskommentiere und den anderen (mit scheduledTimerWithTimeInterval, die stehen direkt uebereinander) aktiviere, gibt es keine probleme (ausser dass der timer dann nicht am anfang der minute feuert.)
    Mac Mini, 1.83 GHz Core 2 Duo, 2 GB, OSX 10.6.3, Xcode 3.2.2
    iPhone 3GS, 16 GB, OS 3.1.3
  • Na ja, ich wuerde einfach mal sagen, dass das daran liegt, dass du -initWithFireDate: nimmst. Denn diese Methode traegt den Timer nicht automatisch in den NSRunLoop ein! Ich glaube, dass das das ganze Problem darstellt, probier doch mal:

    Quellcode

    1. timer = [[NSTimer scheduledTimerWithTimeInterval:[FirstFireDate timeIntervalSinceNow]
    2. target:self
    3. selector:@selector(ClockTrigger)
    4. userInfo:nil
    5. repeats:YES] retain];


    Neum
    "We can make all our dreams come true, but first we have to decide to awaken from them.", Josephine Baker
  • Original von Neum

    Quellcode

    1. timer = [[NSTimer scheduledTimerWithTimeInterval:[FirstFireDate timeIntervalSinceNow]
    2. target:self
    3. selector:@selector(ClockTrigger)
    4. userInfo:nil
    5. repeats:YES] retain];


    Neum


    wird dadurch nicht der intervall verstellt?

    ich hab grade mal addTimer:forMode: abgecheckt. die frage ist, was hat es mit diesem mode parameter auf sich?
    Mac Mini, 1.83 GHz Core 2 Duo, 2 GB, OSX 10.6.3, Xcode 3.2.2
    iPhone 3GS, 16 GB, OS 3.1.3
  • Nein, warum? Nehmen wir mal an es ist 20:15:38 Uhr und der Timer soll 20:16:00 Uhr feuern, dann gibt -timeIntervalSinceNow einfach 22 zurueck und der Timer wird nach 22 Sekunden (also 20:16:00 Uhr) gefeuert. Allerdings wiederholt er sich dann auch alle 22 Sekunden - du musst ihn also editieren, damit er danach alle 60 Sekunden feuert.
    (Du musst natuerlich zuerst noch FirstFireDate einstellen - das hatte ich mir mal gespart ;)).

    Neum
    "We can make all our dreams come true, but first we have to decide to awaken from them.", Josephine Baker
  • Na ja, du kannst ihn ja einmalig abfeuern und dann in der aufgerufenen Methode einen neuen Timer starten bzw. dem alten Timer neue Werte verpassen.
    Denn auch bei -initWithFireDate:FirstFireDate wiederholt er sich alle 22 Sekunden - um mal bei dem Beispiel zu bleiben.

    Neum
    "We can make all our dreams come true, but first we have to decide to awaken from them.", Josephine Baker
  • Original von harry
    ich habs jetzt doch mit addTimer:forMode; gemacht. funzt einwandfrei.

    Kannst du bitte mal sagen, was du als Mode uebergeben hast?

    Neum
    "We can make all our dreams come true, but first we have to decide to awaken from them.", Josephine Baker