mehr fragen zur analoguhr

  • RE: mehr fragen zur analoguhr

    Original von harry
    ja, die custom class steht auf MyView. den CustomView hab ich aus der palette in mein fenster gezogen. haette ich das anders machen sollen?

    Nein, das ist schon richtig so.

    Original von harry
    no such file or directory. die meldung kommt uebrigens nicht wenn ich myview.h importiere.

    Dann scheinst Du Deine Headerdatei nicht mit dem Dateinamen "MyView.h", sondern mit "myview.h" gespeichert zu haben. Wie sieht denn der Inhalt der Headerdatei aus? Ist denn da auch mit Groß-/Kleinschreibung alles korrekt?

    Michael
  • RE: mehr fragen zur analoguhr

    Original von Michael

    Dann scheinst Du Deine Headerdatei nicht mit dem Dateinamen "MyView.h", sondern mit "myview.h" gespeichert zu haben. Wie sieht denn der Inhalt der Headerdatei aus? Ist denn da auch mit Groß-/Kleinschreibung alles korrekt?

    Michael


    nein, das ist schon MyView.h. hab nur im letzten post die grosschreibung ignoriert.

    hab das ganze projekt uebrigens als zip-datei ins netz gestellt. purplemoon.macbay.de/misc/CocoaClock.zip
    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
  • RE: mehr fragen zur analoguhr

    sieht aus als ob mich deine frage nach der header-datei auf die richtige spur gesetzt hat. da war naemlich setSec nicht deklariert (oder wie das heisst). ich hab die zeile eingebaut, und jetzt krieg ich die compiler-warnung nicht mehr. jetzt mal schnell testen...
    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
  • RE: mehr fragen zur analoguhr

    so, die variablenuebergabe funzt jetzt. das naechste projekt ist der timerintervall.

    Original von Tom9811

    Quellcode

    1. -(void)setTimer:(NSTimer*)timer {
    2. if( timer != _timer ) {
    3. _[timer invalidate];
    4. [_timer release];
    5. _timer = [timer retain];
    6. }
    7. }


    wenn ich das richtig verstehe, muss ich den timer zuerst invalidieren, dann releasen und dann kann ich der variablen einen neuen timer zuweisen, korrekt?
    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
  • noch ne frage: wenn ich nen timer habe der einmal pro minute ein signal abgibt, kann ich irgendwie erreichen dass das signal immer am anfang der minute also z.b. 13:22:00 kommt und nicht in der mitte (13:22:35)? in der java-version hab ich das gemacht indem ich mir die zeit (in millisekunden) geholt hab, dann die wartezeit berechnet und dann thread.sleep(). geht das auch in cocoa?
    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
  • bin grade dabei damit rumzuprobieren. dabei bin ich schon wieder auf ein problem gestossen: sobald die zeile

    Quellcode

    1. yr = [now yearOfCommonEra];
    ausgefuehrt wird, bleibt das programm haengen. in der dokumentation (die funzt wieder!) steht dass yearOfCommonEra ein int ausspuckt, also hab ich yr als int deklariert, aber das hat das problem nicht beseitigt. now ist uebrigens ein NSCalendarDate.
    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
  • Original von harry
    bin grade dabei damit rumzuprobieren. dabei bin ich schon wieder auf ein problem gestossen: sobald die zeile

    Quellcode

    1. yr = [now yearOfCommonEra];
    ausgefuehrt wird, bleibt das programm haengen. in der dokumentation (die funzt wieder!) steht dass yearOfCommonEra ein int ausspuckt, also hab ich yr als int deklariert, aber das hat das problem nicht beseitigt. now ist uebrigens ein NSCalendarDate.

    Hmm. Da kann eigentlich nur was mit deiner NSCalendarDate Instanz nicht passen.
    Mit was fuer einem Fehler bleibt das Programm denn haengen?

    Manfred
  • keine fehlermeldung, es ist einfach eingefroren. aber ich hab selbst rausgefunden was los war: now war out of scope. da hab ich wohl mal wieder zu schnell geschossen...

    ich habs zum laufen gebracht und dann festgestellt, dass wenn ich den sekundenzeiger ausschalte, bleibt er noch ne minute sichtbar. versuche grade das abzustellen...
    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
  • Original von Tom9811
    -initWithFireDate:interval:target:selector:userInfo:repeats:(NSTimer)


    hab grade versucht den timer umzustellen von scheduledTimerWithTimeInterval: (hat funktioniert) auf initWithFireDate:, und da bekomme ich ne fehlermeldung: warning: 'NSTimer' may not respond to '+initWithFireDate:interval:target:selector:userInfo:repeats:'
    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
  • Original von Tom9811

    Quellcode

    1. timer = [[[NSTimer alloc] initWithFireDate:…] autorelease];


    so hab ich's versucht, mit dem ergebnis dass das programm immer eingefroren ist. erst als ich aus dem autorelease ein retain gemacht hab, hat das aufgehoert. aber jetzt hab ich ein anderes problem: der timer feuert nicht.

    das hier funzt:

    Quellcode

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


    das hier funzt nicht:

    Quellcode

    1. FirstFireDate = [NSCalendarDate dateWithYear:yr
    2. month:mo
    3. day:d
    4. hour:h
    5. minute:m
    6. second:0
    7. timeZone:TZ];
    8. timer = [[[NSTimer alloc] initWithFireDate:FirstFireDate
    9. interval:interval
    10. target:self
    11. selector:@selector(ClockTrigger)
    12. userInfo:nil
    13. repeats:YES] retain];
    Alles anzeigen

    was mach ich falsch?
    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
  • Also das retain ist hier definitiv ueberfluessig. Denn mit -alloc wird bereits retained.
    Hast Du schonmal versucht, das -autorelease einfach weg zu lassen, anstatt ein -retain zu machen?
    Sollte damit den gleichen effekt haben.
    Ich nehme an, dass durch das Autorelease, wenn die Runloop durch ist und der Timer noch nicht gefeuert hat, der timer released wird und dadurch nicht mehr feuern kann. Das kannst Du umgehen, indem Du das autorelease weg laesst. Ein zusaetzliches retain ist aber IMHO ueberfluessig.

    Warum er nicht feuert?
    Was ist das fuer eine Variable, der Du den Timer zuweist?
    Lokale oder Instanzvariable?


    Manfred