Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>XCode 2.4.1 ist da

XCode 2.4.1 ist da

Z01.11.0609:07
Kennt Ihr das Gefühl, etwas unnötig gemacht zu haben?
Ich hab z.B. gestern XCode 2.4 erneut runtergeladen...
Und heute ist gerade XCode 2.4.1 erschienen.
0

Kommentare

jonny91
jonny9101.11.0609:12
Ich will Xcode 3.0:-/
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
Z01.11.0610:10
will ich auch. Aber das dauert wohl noch.
0
aikonch02.11.0616:26
Gibt es eigentlich irgendwo ein "Schnelleinstieg" wenn möglich auf Deutsch sozusagen von 0 bis zur ersten HelloWorld.app komplett in XCode gewschrieben und UB....also so im Stil wo muss ich klicken um was zu machen....korrekt, damit habe ich immer die grössten Probleme, nicht mit dem schreiben von Programmen....:-D
0
planetexpress69
planetexpress6902.11.0616:27
Aikonch, mache ich Dir.
0
planetexpress69
planetexpress6902.11.0616:29
Ich meine, formuliere eine kleine Challenge, was das Programm machen soll und ich schreibe Dir ein Tutorial...
0
rowkajjh
rowkajjh02.11.0616:33
aikonch
Gibt es eigentlich irgendwo ein "Schnelleinstieg" wenn möglich auf Deutsch sozusagen von 0 bis zur ersten HelloWorld.app komplett in XCode gewschrieben und UB....also so im Stil wo muss ich klicken um was zu machen....korrekt, damit habe ich immer die grössten Probleme, nicht mit dem schreiben von Programmen....:-D

#import <stdio.h>

int main()
{
puts("Hallo Welt!");
return 0;
}

Das war aber einfach. Ansonsten:
0
Arachnid
Arachnid02.11.0616:36
rowkajjh
Er will bestimmt eher ein tolles App mit GUI und kein C Programm machen, weil das brauch man ja nicht in XCode machen, da nimmt man Vim und gut ist .
0
aikonch02.11.0616:43
planetexpress69, sehr cool....hmmm irgend was ganz kleines, wo man zwei Zahlen eingeben kann und mit der Maus auf = drücken und schon wird das Ergebnis ausgegeben oder so....:-y(!)
0
aikonch02.11.0616:45
rowkajjh, eben nicht das Programmm schreiben ist das Problem, sondern der Rest darum....also von diesem "Text2 zum APP das man jemandem geben kann, der kopiert es nach Programme und startet es....

Arachnid, Gui ist auch nett, müsste nichteinmal sein, mehr eine Anleitung wie benutze ich XCode....
0
Nebu2k02.11.0617:00
planetexpress69
Wäre an dem Tuturial dann auch interessiert.
0
planetexpress69
planetexpress6902.11.0617:11
Moment... 10 Minuten.
0
rowkajjh
rowkajjh02.11.0617:12
Arachnid
rowkajjh
Er will bestimmt eher ein tolles App mit GUI und kein C Programm machen, weil das brauch man ja nicht in XCode machen, da nimmt man Vim und gut ist .

Da ist kein C, das ist Obj-C.

Aber mal im Ernst. der Hillegass, alles andere ist Quatsch. Wollte man ein anständiges Tutorial machen, wäre es auch nicht kürzer.


0
Arachnid
Arachnid02.11.0617:15
rowkajjh

Das ist pures ANSI C !
0
Arachnid
Arachnid02.11.0617:16
Das gute ist ja, dass man in Obj. C auch normales C mit nutzen kann, deshalb verwechelst du das vielleicht.
0
Arachnid
Arachnid02.11.0617:20
Genauso verhällt es sich mit C++. man kann C und C++ miteinander mischen, sowie C und obj. C.
0
jonny91
jonny9102.11.0617:21
rowkajjh stimmt! Hillegass ist genial. Nur wenn man nur mal ganz fix rein schnuppern möchte tut es auch der Currency Converter:
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
planetexpress69
planetexpress6902.11.0617:44
Uuuund los:

XCode starten
[XC] File New Project Cocoa-Application
[XC] Project Name: AddNumbers
[XC] Project Directory: ~/AddNumbers/

[XC] Doppelklick auf AddNumbers/Resources/MainMenu.nib (IB startet)
[IB] Doppelklick auf "Window" (im Fenster MainMenu.nib (English))
[IB] Drei Textfelder (für Summand1, Summand2, Summe) aus der Palette und einen Button (für die Action) auf das Fenster ziehen und nach Geschmack anordnen.
[IB] Auf Tab "Classes" umschalten, dort ganz nach Links auf die Objektwurzel scrollen und 'NSObject' auswählen.
[IB] Rechtsklick au 'NSObject' und 'Subclass NSObject' wählen es entsteht 'MyObject'.
[IB] Rechtsklick auf 'MyObject' Add outlet to MyObject das entstehende 'myOutlet' in 'summand1' umbenennen.
[IB] Rechtsklick auf 'MyObject' Add outlet to MyObject das entstehende 'myOutlet' in 'summand2' umbenennen.
[IB] Rechtsklick auf 'MyObject' Add outlet to MyObject das entstehende 'myOutlet' in 'summe' umbenennen.
[IB] Rechtsklick auf 'MyObject' Add outlet to MyObject das entstehende 'myOutlet' in 'button' umbenennen.
[IB] Rechtsklick auf 'MyObject' Add action to MyObject das entstehende 'myAction:' in 'summiere:' umbenennen.
[IB] Rechtsklick auf 'MyObject' Instantiate MyObject der IB schaltet wieder auf die Ansicht 'Instances' um.
[IB] Vom selektierten blauen Würfel 'MyObject' mit gedrückter 'Ctrl'-Taste eine Verbindung zum ersten Textfeld (soll Summand1 sein) ziehen und im Fenster Connections das Outlet 'summand1' selektieren. 'Connect' button drücken.
[IB] Vom selektierten blauen Würfel 'MyObject' mit gedrückter 'Ctrl'-Taste eine Verbindung zum zweiten Textfeld (soll Summand2 sein) ziehen und im Fenster Connections das Outlet 'summand2' selektieren. 'Connect' button drücken.
[IB] Vom selektierten blauen Würfel 'MyObject' mit gedrückter 'Ctrl'-Taste eine Verbindung zum dritten Textfeld (soll Summe sein) ziehen und im Fenster Connections das Outlet 'summe' selektieren. 'Connect' button drücken.
[IB] Vom selektierten blauen Würfel 'MyObject' mit gedrückter 'Ctrl'-Taste eine Verbindung zum Button (triggert die Action) ziehen und im Fenster Connections das Outlet 'button' selektieren. 'Connect' button drücken.
[IB] Vom angelegten Button im Fenster Window (Dein Programm-GUI) mit gedrückter Control-Taste eine Verbindung zum blauen Würfel 'MyObject ziehen, Action 'summiere:' auswählen. 'Connect' drücken.
Alles verkabelt?
[IB] Blauen Würfel "MyObject" auswählen und auf Tab "Classes" umschalten. Dort sollte 'MyObject' in der Liste bereits selektiert sein.
[IB] Recte Mausklick auf den selektierten Eintrag 'MyObject' 'Create Files for MyObject'. Alles so lassen und "Choose" wählen.
[IB] Speichern und beenden.
[XC] AddNumbers/Other Sources ausklappen. Dort müssten jetzt 'MyObject.h' und 'MyObject.m' liegen!?
[XC] MyObject.m editieren und zwischen die beiden geschwungenen Klammern
[summe setStringValue:[[[NSNumber alloc] initWithInt:[summand1 intValue] + [summand2 intValue]] stringValue]];
schreiben.

Build & Run!
0
planetexpress69
planetexpress6902.11.0617:47
Aber ich denke auch, dass Hillegas besser ist.
0
jonny91
jonny9102.11.0617:50
planetexpress69
Aber ich denke auch, dass Hillegas besser ist.

„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
MacRabbitPro02.11.0618:02
planetexpress69

schönes Speicherleak dass du da in deinem Beispielprogramm produziert hast

...nicht zur Nachahmung empfohen! (sick)
0
jonny91
jonny9102.11.0618:22
MacRabbitPro: stimmt!

[summe setIntValue:[summand1 intValue] + [summand2 intValue]];

tut es doch auch! und ist sogar einfacher. Oder:

[summe setStringValue:[[[[NSNumber alloc] initWithInt:[summand1 intValue] + [summand2 intValue]] autorelease] stringValue]];
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
planetexpress69
planetexpress6902.11.0618:24
Mann, ich wußte es.
0
rowkajjh
rowkajjh02.11.0618:29
Arachnid
rowkajjh

Das ist pures ANSI C !

Klar, vor allem diese Zeile:

#import <stdio.h>

0
jonny91
jonny9102.11.0618:36
rowkajjh

#include <stdio.h>

dann passt es
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
Arachnid
Arachnid02.11.0619:20
ach komm, ob nun import oder include ...
Ne ok, bin einverstanden, aber halt nur die erste Zeile..
0
aikonch02.11.0621:26
planetexpress69, wow cool, vielen herzlichen Dank da werde ich mich gleich mal dahinterklemmen!!
0
Z03.11.0607:41
MacRabbitPro
planetexpress69

schönes Speicherleak dass du da in deinem Beispielprogramm produziert hast

...nicht zur Nachahmung empfohen! (sick)

erklär mal bitte genauer
0
rowkajjh
rowkajjh03.11.0610:03
Z
MacRabbitPro
planetexpress69

schönes Speicherleak dass du da in deinem Beispielprogramm produziert hast

...nicht zur Nachahmung empfohen! (sick)

erklär mal bitte genauer

Er meint bestimmt das hier:
[summe setStringValue:[[[NSNumber alloc] initWithInt:[summand1 intValue] + [summand2 intValue]] stringValue]];
Wo ist das dealloc zu dem alloc?
0
MacRabbitPro03.11.0610:40
Z

rowkajjh hat Recht.

Alles Objekte die mit alloc / init erzeigt werden müssen mit release oder autorelease explizit freigegeben werden sonst bleicht der Speicher bis zum Programmende allockiert.

Da er ein NSNumber Objekt mit alloc / init erzeugt, damm die Referenz darauf aber direkt in setStringValue von summe "hineinsteckt", "verliert" er das Objekt und kann es nicht wieder freigeben.

Es hätte schon gereicht wenn er es folgendermaßen geschrieben hätte:

NSNumber* result = [[NSNumber alloc] initWithInt:[summand1 intValue] + [summand2 intValue]];
[summe setStringValue:[result stringValue]];
[result release];
0
planetexpress69
planetexpress6903.11.0610:50
Natürlich haben alle recht, die das Leck bemängelten. Sorry, aber da habe ich mir auf die Rasche wirklich kompliziert ins Bein geschossen.

Ich habe aber mehr Mühe darauf verwandt, das Verdrahten der Interface-Komponenten und das Generieren der Stubs zu beschreiben. Und das wurde ja auch primär angefragt.

Allerdings hat der Fehler eher akademische Konsequenzen, es sollte 'AddNumbers' (bei einer angenommenen kurzen Laufzeit) kaum gelingen, mehr als 1 GB mit stehengelassenen NSNumbers zu allozieren.

Grundsätzliches zur Speicherverwaltung (release/retain) findet sich zum Beispiel bei cocoadevcentral.com.

Und wenn ich mich recht erinnere nimmt Herr Hillegas beim Start auch erst mal Leaks in Kauf, um im zweiten Schritt zu illustrieren, wie man sie los wird.

Fortgeschrittenen Einsteigern empfehle ich als Editor SubEthaEdit. Dort wird per Syntax-Coloring alles rot eingefärbt, was 'released' werden muß.

Der primär Java nutzende Martin

0
Michael Schmidt
Michael Schmidt03.11.0617:26
Übrigens: So für den Einstieg:


CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Dieter01.11.0610:15
Ist 4.x nicht noch besser?
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.