problem im project builder

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • problem im project builder

    hi.
    ich hab meine analoguhr mal wieder ausgegraben, und beim compilieren gibts probleme:
    - wenn ich den "build" knopf anklicke, funzt es, aber wenn ich dann das resultat davon lade, verabschiedet es sich sofort und ohne kommentar.
    - bei "build and run" bekomme ich folgende fehlermeldung: "AnalogClock has exited with status 1." in rot ueber dem listing
    - bei "build and debug" erscheint ein neues fenster mit folgendem text:

    File: pbxinterface/AppSupport.subproj/PBXToolbar.m
    Line: 57
    Object: <PBXToolbar:0x0239a980>
    Method: itemWithIdentifier:
    itemIdentifier should be a string, but it is nil

    PS. geschrieben hab ich das programm mit einer frueheren version von project builder unter einer frueheren version von OSX, und da gab es diese probleme nicht.
    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: problem im project builder

    Original von Michael
    Na, die Meldung ist doch recht aufschlussreich. In der Datei PBXToolbar.m in Zeile 57 ¸bergibst Du der Methode itemWithIdentifier: keine korrekt initialisierte Stringvariable.


    ich uebergebe da gar nichts. mit dem PBXToolbar.m hab ich nichts zu tun (gehabt). d.h. wenn da ein fehler drin ist, kommt der nicht von mir sondern von apple.
    fuer was ist diese datei gut, und wie kommt sie in mein programm? ich hab da nur ein fenster mit der uhr. kein menue, kein toolbar, nichts...
    wird zeit dass das buch hier aufkreuzt. hoffentlich am montag...
    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: problem im project builder

    schon mal versucht, einen 'cleanen' Build zu machen?
    Ansonsten versuche den Aufruf, der zum Fehler f¸hrt, mit dem Debugger einzugrenzen. Oder stell das Projekt irgendwo online, dann kˆnnen wir gesammelt dr¸ber schauen.... So sagt mir die Meldung gar nichts.
  • RE: problem im project builder

    Original von snowman
    schon mal versucht, einen 'cleanen' Build zu machen?

    was ist das und wie mach ich das?

    Ansonsten versuche den Aufruf, der zum Fehler f¸hrt, mit dem Debugger einzugrenzen.

    kann man den debugger sonst noch irgendwie aufrufen ohne "build and debug"? wenn ich "build and debug" anklicke, bekomme ich nur diese fehlermeldung...

    Oder stell das Projekt irgendwo online, dann kˆnnen wir gesammelt dr¸ber schauen.... So sagt mir die Meldung gar nichts.

    purplemoon.mine.nu/analogclock/
    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: problem im project builder

    Original von hmiersch
    ich uebergebe da gar nichts. mit dem PBXToolbar.m hab ich nichts zu tun (gehabt). d.h. wenn da ein fehler drin ist, kommt der nicht von mir sondern von apple.
    fuer was ist diese datei gut, und wie kommt sie in mein programm?

    Ja, jetzt wo Du das sagst, scheint mir PBXToolbar.m eine Sourcedatei des Projekt Builders zu sein. Versuch mal den Clean-Build (im Men¸ "Build" -> "Clean All Targets" ausw‰hlen und dann "Build")

    Da Dein Programm ja ein Java-Programm ist, hast Du das letzte Java-Update installiert? Vielleicht liegts ja auch daran.

    Und den Debugger kˆnntest Du auch im Terminal starten. Wie der dann zu steuern ist, steht in der manpage (man gdb).

    Michael
  • RE: problem im project builder

    Original von Michael
    Versuch mal den Clean-Build (im Men¸ "Build" -> "Clean All Targets" ausw‰hlen und dann "Build")

    hab ich versucht. beim erstenmal bekam ich wieder eine fehlermeldung (wie komm ich ans build log dran?), beim zweiten versuch hat's geklappt. aber die ganze aktion hat nichts gebracht, ich bekomme noch die gleichen fehlermeldungen.


    Da Dein Programm ja ein Java-Programm ist, hast Du das letzte Java-Update installiert? Vielleicht liegts ja auch daran.

    ja, hab ich. ist AFAIK version 1.4.1...
    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: problem im project builder

    Das build-log wird im unteren Teil des build-Fensters angezeigt.
    Ansonsten kann ich mich nur selbst zitieren. Leg ein neues Projekt 'AnalogClock' an und kopier den Quell-Code ins Projekt. So habe ich das Teil zum Laufen gebracht.
  • RE: problem im project builder

    Original von Michael
    Ich kann snowman best‰tigen. Habe auch ein neues Projekt angelegt und Deinen Source reinkopiert. L‰uft, auch mit Java Version 1.4.1.

    Michael


    hab ich auch gemacht, und jetzt geht es. IOW, problem geloest. thanx. :HW:

    PS. ich hab ziemliche probleme hier ins forum zu kommen. fast jedesmal wird mein passwort nicht akzeptiert :mauer:, und ich kann das problem nur umgehen indem ich mir ein neues passwort geben lasse und dann im profil wieder aendere. hat sonst noch jemand dieses problem?
    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: problem im project builder

    Ich konnte nicht widerstehen und habe einen Blick auf Deinen Quell-Code geworfen. Dabei sind mir verschiedene Sachen aufgefallen. Ich will mich hier nicht als Besserwisser profilieren, aber falls Du Interesse hast, Design/Implementierung der Uhr zu diskutieren, h‰tte ich was beizutragen.
  • RE: problem im project builder

    Original von snowman
    Ich konnte nicht widerstehen und habe einen Blick auf Deinen Quell-Code geworfen. Dabei sind mir verschiedene Sachen aufgefallen. Ich will mich hier nicht als Besserwisser profilieren, aber falls Du Interesse hast, Design/Implementierung der Uhr zu diskutieren, h‰tte ich was beizutragen.


    lass es raus. die uhr war mein erstes projekt, da kann man nicht erwarten dass es perfekt ist. und wenn ich dabei noch was lernen kann, um so besser.

    lass mich raten: einer der punkte ist date(now) statt GregorianCalendar, richtig?
    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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von harry ()

  • RE: problem im project builder

    <ul>
    <li>die Klasse ACP ist meiner Meinung nach ¸berfl¸ssig. Strukturell erinnert das Ganze stark an C. Dabei sind dort Properties der Analog-Uhr gekapselt. warum also nicht Member-Variablen von Analog-Clock daraus machen?</li>
    <li>da Deine Klasse keine eigenen Member-Variablen hat, m¸sstest Du konsequenter Weise alle Methoden als "static" deklarieren. Kurz: das ist kein Object-orientiertes Design, dabei sind die Bestandteile der ACP-Klasse gute Kandidaten daf¸r</li>
    <li>da Du die Klasse von JPanel abgeleitet hast, kˆnnte man meinen, die Uhr auch leicht in einer Anwendung, auf einem Panel, wieder verwenden zu kˆnnen. Geht aber nicht, da die Anwendung ja wissen m¸sste, das sie in einem eigenen Thread die Uhr loopen soll.</li>
    <li>es macht eigentlich keinen Sinn, jede Sekunde die Uhr komplett zu zeichnen</li>
    <li>das Date-Objekt, neben der Tatsache, dass es besser w‰re, GregorianCalendar zu verweden, sollte auch eine Instanz-Variable sein, im Konstruktor nur einmal erzeugt und dann aktualisiert werden</li>
    <li>die Zeile <pre>if (weight<1) weight =1; // minimum line width</pre> innerhalb der for-Schleife ist ¸berfl¸ssig</li>
    <li>1-basierte Arrays??!?</li>
    <li>aus Performance-Gr¸nden w¸rde ich mindestens f¸r die Sekunden Werte die Zeiger-Positionen in ein Array schreiben</li>
    <li>das (1-basierter?!) Array mit den rˆmischen Ziffern sollte ein statisches Klassen-Objekt sein</li>
    <li>die Stunden/Minuten/Sekunden ermittelt man besser nicht mit String-Parsing (<pre>get(Calendar.HOUR_OF_DAY)</pre>)</li>
    </ul>
    Vorschl‰ge: schreibe einen Konstruktor, starte deinen eigenen Thread, das geht sehr schˆn mit folgender Wendung:
    <pre>
    Runnable runner = new Runnable(){
    public void run(){
    repaint();
    freq=60000;
    if (ACP.showSecondHand) freq=1000;
    if (ACP.showSecondDigit) freq=1000;
    long wait=freq-(System.currentTimeMillis()%freq);
    try{Thread.currentThread().sleep(wait+50);}
    catch(InterruptedException ie) {}
    }
    }
    Thread run = new Thread(runner);
    run.setDaemon(true);
    run.start();
    };
    </pre>
    Lege eine Image-Instanz als Instanz-Object an, in die Du das Ziffernblatt zeichnest, und zeichne das Image nur dann neu, wenn die Grˆfle des Panels ge‰ndert wurde (setSize()), ansonsten kannst Du mit drawImage() das Ziffernblatt in der paint() Methode unver‰ndert zeichnen. So kannst Du auch leicht eigene Zifferbl‰tter in Form von Grafikdateien
    (z.B. das geklaute aus Apples Uhr) einbauen. Teilweise lassen sich die Kreisberechnungen noch optimieren.
  • RE: problem im project builder

    aehm, ich versteh (fast) nur bahnhof.

    was z.b. ist ein 1-basiertes array?

    das zifferblatt koennte ich nur mit drawinage() zeichnen solange die fenstergroesse gleichbleibt. wenn die sich aendert muss ich das zifferblatt komplett neu zeichnen.

    wenn ich die variablen aus ACP direkt in die uhr-klasse einbaue, kann ich sie dann noch abspeichern als preferences? deshalb hab ich sie naemlich in eine eigene klasse gesetzt.

    wie aktualisiere ich das date-objekt (wie heisst die methode)?
    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: problem im project builder

    zeit aktualisieren geht so:
    <pre>
    <dein Date-Objekt>.setTime(System.currentTimeMillis());
    </pre>

    ein 1-basiertes Array gibt es eigentlich nicht. In java,C, usw ist der erste Index eines Arrays immer 0. ein 1-basiertes Array kann man erreichen, wenn man einen Dummy-Eintrag auf die 0te Position schreibt.
    Um das Dilemma Deines Designs zu verdeutlichen, versuch mal folgendes zu machen:
    Erzeuge ein Fenster mit 2 Uhren und 2 unterschiedlichen Zeitzonen, eine mit und eine ohne Sekundenzeiger...
    Das mit dem Image habe ich auch nicht anders behauptet. Allerdings wird die Fenstergrˆfle ja nicht jede Sekunde ge‰ndert.