Archiv Juni 2009


Job in saidmade: Programmierer gesucht

Saidmade Ltd , trotz der scheinbaren Augenblick der Krise, bietet eine große Chance für junge Computer-Enthusiasten. Die 'richtigen Job Angebot richtet sich an all diejenigen, die als Entwickler, ein Beruf, der Leidenschaft und großen Wunsch, oft besonders hier in Italien arbeiten wollen, unterschätzt erfordert gerichtet. Die Firmen, die sie Partner, daher ist für einen Programmierer / Junior-Programmierer mit den folgenden Anforderungen gesucht:

  • Alter zwischen 18 und 27 Jahren und einer guten Portion Kreativität
  • Grundkenntnisse in der Programmierung und vor allem der Sprache ANSI-C

Wunsch, Wissen zu erwerben von:

  • OO-Programmierung
  • PHP
  • Javascript
  • Adobe ActionScript
  • C + + / Objective-C

Es ist auch ein Vorteil des Wissens:

  • XHTML / CSS
  • WordPress

Wenn Ihr Profil und Ihre Interessen in der oben reflektiert werden, senden Sie bitte Ihren Vorschlag an condidatura: info@saidmade.com

Mehr ...

Eclipse, Aptana: Uploaden von Dateien mit Hilfe der Tastatur

Die IDE Aptana ist auch als Plugin für Eclipse- . Eines der am meisten geschätzten Merkmale dieser Umgebung ist ein hervorragendes Management-und FTP-Datei-Synchronisation / lokales Projekt mit Fernbedienung. Insbesondere gibt es ein Skript, das Sie den Code derzeit senden im Editor-Fenster auf den Server remote mit Hilfe der Tastenkombination CONTROL erlaubt + SHIFT + U bzw. Befehl + Umschalt + U auf Mac OS (die gleiche Kombination wird in Adobe Dreamweaver verwendet). In einigen Installationen (zum Beispiel mein Mac OS und Eclipse mit Aptana Plugin) Diese Kombination scheint abwesend zu sein und, wenn Sie es in den Voreinstellungen zu verfolgen versuchen> General> Keys nicht finden - geheimnisvoll - nichts! Das Problem ist jedoch, ist leicht zu lösen und hängt von der Überlappung der anderen Einstellung. Es ist offensichtlich, dass die Kombination der oben genannten Tasten standardmäßig auf eine andere Funktion eingestellt ist: Zeigt Vorkommen im Menü File Schnellsuche. Dann öffnen Sie einfach das Menü für Einstellungen> Allgemein> Tasten und Suchen Shows OCC ..:

eclipseprefs

Rimuivere die "Bindung", dh die Verbindung mit der Tastenkombination, und es wird funktionieren!

Mehr ...

iPhone: alle Systemschriften

Das Apple iPhone verfügt über eine begrenzte Anzahl von Schriftarten für Entwickler. Die Liste der verfügbaren Schriften ist leicht durch Code erreicht, wie wir sehen werden. Wenn Sie Ihre eigenen Schriftarten verwenden, zum Beispiel durch die Aufnahme in den Ressourcen wollen, ist es ein wenig mehr artikulieren und conivolge auch die Erteilung von Lizenzen (Rechte) auf Schriftarten "embeddati" ... wir reden später. Rückkehr statt, die offizielle Schriftart nell'Apple iPhone sind (klicken Sie auf das Bild zu vergrößern) zu präsentieren:

iphonefonts

Das Apple iPhone SDK ermöglicht den Zugriff auf die speziellen System-Fonts. Diese werden durch bestimmte Konstanten identifiziert und sind:

1
2
3
[ UIFont boldSystemFontOfSize : 12.0 ] ; UIFont myBoldFont * = [UIFont boldSystemFontOfSize: 12,0];
[ UIFont SystemFontOfSize : 12.0 ] ; UIFont mySystemFont * = [UIFont SystemFontOfSize: 12,0];
[ UIFont italicSystemFontOfSize : 12.0 ] ; UIFont myItalicFont * = [UIFont italicSystemFontOfSize: 12,0];

Wenn Sie tatsächlich einen Zeiger auf eine Schriftart ODEI im Bild oben gezeigt verwenden Sie einfach:

1
[ UIFont fontWithName : @ "Helvetica-Bold" size : 22.0 ] ; UIFont myCustomFont * = [UIFont fontWithName: @ "Helvetica-Bold" Größe: 22,0];

Wie bereits das Management der Schrift ist etwas Besonderes, neben der Familie (Helvetica, Courier, etc ...) müssen Sie die Art angeben (fett, kursiv, etc ...). In der Praxis muss daher eine Schrift mit diesen Merkmalen versehen werden. Die Helvetica zum Beispiel vorhanden ist, mit:

1
2
3
4
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-Oblique

Wenn Sie Ihre Schriften direkt auf dem iPhone angezeigt werden möchten, ist hier einige nützliche Code-Zeile:

1
2
3
4
5
6
7
8
9
10
11
12
listOfFonts = [ [ NSArray alloc ] initWithArray : [ UIFont familyNames ] ] ; NSArray * listOfFonts = [[ NSArray alloc] initWithArray: [UIFont Familiennamen]];
subFontTypes; NSArray * subFontTypes;

int i = 0 ; i< [ listOfFonts count ] ; i ++ ) { for (int i = 0; i <[listOfFonts count]; i + +) {
"Font Family: %@" , [ listOfFonts objectAtIndex : i ] ) ; NSLog (@ "Schriftfamilie:% @", [listOfFonts objectAtIndex: i]);
NSArray alloc ] initWithArray : [ UIFont fontNamesForFamilyName : [ listOfFonts objectAtIndex : i ] ] ] ; subFontTypes = [[ NSArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [listOfFonts objectAtIndex: i]]];
int j = 0 ; j< [ subFontTypes count ] ; j ++ ) { for (int j = 0, j <[subFontTypes count] j + +) {
"+----->Type: %@" , [ subFontTypes objectAtIndex : j ] ) ; NSLog (@ "+ -----> Typ:% @", [subFontTypes objectAtIndex: j]);
}
; [SubFontTypes release];
}
; [ListOfFonts release];

Mit dem SDK 2.2.1 auf meine Hypothek, bekam ich:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Schriftfamilie: Courier
+ -----> Typ: Courier
+ -----> Typ: Courier-Oblique
+ -----> Typ: Courier-Oblique
+ -----> Typ: Courier-Bold
Schriftfamilie: AppleGothic
+ -----> Typ: AppleGothic
Schriftfamilie: Arial
+ -----> Typ: ArialMT
+ -----> Typ: Arial-BoldMT
+ -----> Typ: Arial-BoldItalicMT
+ -----> Typ: Arial-ItalicMT
Schriftfamilie: STHeiti TC
+ -----> Typ: Light-STHeitiTC
+ -----> Typ: Medium-STHeitiTC
Schriftfamilie: Hiragino Kaku Gothic Pron
+ -----> Typ: HiraKakuProN-W6
+ -----> Typ: HiraKakuProN-W3
Schriftfamilie: Courier New
+ -----> Typ: CourierNewPS-BoldMT
+ -----> Typ: CourierNewPS-ItalicMT
+ -----> Typ: CourierNewPS-BoldItalicMT
+ -----> Typ: CourierNewPSMT
Schriftfamilie: Zapfino
+ -----> Typ: Zapfino
Schriftfamilie: Arial Unicode MS
+ -----> Typ: ArialUnicodeMS
Schriftfamilie: STHeiti SC
+ -----> Typ: Medium-STHeitiSC
+ -----> Typ: Light-STHeitiSC
Schriftfamilie: American Typewriter
+ -----> Typ: AmericanTypewriter
+ -----> Typ: AmericanTypewriter-Bold
Schriftfamilie: Helvetica
+ -----> Typ: Helvetica-Oblique
+ -----> Typ: Helvetica-Oblique
+ -----> Typ: Helvetica
+ -----> Typ: Helvetica-Bold
Schriftfamilie: Marker Felt
+ -----> Typ: Thin-MarkerFelt
Schriftfamilie: Helvetica Neue
+ -----> Typ: HelveticaNeue
+ -----> Typ: HelveticaNeue-Bold
Schriftfamilie: DB-LCD-Temp
+ -----> Typ: DBLCDTempBlack
Font family: Verdana
+ -----> Typ: Verdana-Bold
+ -----> Typ: Verdana-BoldItalic
+ -----> Typ: Verdana
+ -----> Typ: Verdana-Italic
Schriftfamilie: Times New Roman
+ -----> Typ: TimesNewRomanPSMT
+ -----> Typ: TimesNewRomanPS-BoldMT
+ -----> Typ: TimesNewRomanPS-BoldItalicMT
+ -----> Typ: TimesNewRomanPS-ItalicMT
Schriftfamilie: Georgien
+ -----> Typ: Georgien-Bold
+ -----> Typ: Georgien
+ -----> Typ: Georgien-BoldItalic
+ -----> Typ: Georgien-Italic
Schriftfamilie: STHeiti J
+ -----> Typ: Medium-STHeitiJ
+ -----> Typ: Light-STHeitiJ
Schriftfamilie: Arial Rounded MT Bold
+ -----> Typ: ArialRoundedMTBold
Schriftfamilie: Trebuchet MS
+ -----> Typ: TrebuchetMS-Italic
+ -----> Typ: TrebuchetMS
+ -----> Typ: Trebuchet-BoldItalic
+ -----> Typ: TrebuchetMS-Bold
Schriftfamilie: STHeiti K
+ -----> Typ: Medium-STHeitiK
+ -----> Typ: Light-STHeitiK

Mehr ...

Wie NSLog () von der Quelle entfernen XCode

<a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSLog">NSLog()</a> eine nützliche Funktion in der frühen Phase eines Projekts zum Testen und Debuggen einer Anwendung für Apple iPhone oder ganz allgemein in XCode-Umgebung. Da nur eine Funktion, genau wie der andere, wird seine Anwesenheit auch zu spüren sein, wenn die Freigabe (Release) unserer ausführbare. potrebbero influire sulle performance della nostra applicazione, soprattutto se abbiamo inserito NSLog() all'interno di loop. Es wird daher notwendig zu entfernen, in gewisser Weise, alle Linien von NSLog() aus unserem Code, weil es nicht notwendig ist, entweder weil die Anrufe an NSLog() , die Leistung unserer Anwendung beeinträchtigen könnten, insbesondere wenn wir setzen NSLog() , um 'innere Schleife.

Unmittelbar auszuschließen Lösung für das "Look" und "Abbrechen", weil es eines Tages wieder verwendet werden könnten. Wir schließen auch die Lösung des "Look" und "Kommentare", unangenehm aus dem gleichen Grund wie zuvor. Zum Glück eine saubere, einfache und mit den richtigen Compiler Konditionale. Was wir tun in der Praxis, und sagen Sie dem Compiler mit, ausschließen - wenn es einen bestimmten Zustand - bei der Erstellung unserer Quelle Linien, die enthalten NSLog() .

Die Zusammenstellungen von Richtlinien und Anweisungen des bedingten Compiler, sind ein sehr mächtiges und weit verbreitet. Wer von der Entwicklung der ANSI-C sicherlich wissen sehr gut, und wird in vielen Situationen utilizzte. Die Besonderheit dieser "Anleitung" liegt in der Tatsache, oben erwähnt, auf die der Compiler und nicht ausführbar zu sehen. Diese Eigenschaft macht sie in vielen Fällen nützlich und kann Probleme lösen, sonst sehr ärgerlich.

Mal sehen, ein Beispiel-Code, der, wie vorhergesagt, Sie "Löschen" können durch die Erstellung Teile des Codes, in unserem Fall NSLog() :

1
2
3
4
5
6
# Definieren ACTIVE_NSLOG 1
/ / Wenn die Konstante definiert ist ACTIVE_NSLOG füllen
/ / Code-Block zwischen # ifdef und # endif
# Ifdef ACTIVE_NSLOG
" ... bla bla" ) ; NSLog (@ "... bla bla");
# Endif

). Bedingte Anweisungen sind Teil der Compiler von der gleichen Familie wie #define , auch in der Tat, werden durch ein "Pfund" (vorausgegangen # ). solo se ACTIVE_NSLOG è definito. In dem gezeigten Beispiel haben wir eine Konstante definiert ACTIVE_NSLOG ; nachfolgende Zeilen Code weist den Compiler an "include" Zeile NSLog() nur dann, wenn ACTIVE_NSLOG definiert ist. Wenn wir uns kümmerten, während der Arbeit an unseren Code, Einfügen Anrufe an NSLog() innerhalb des Blocks #ifdef ... #endif per far sparire, alla prossima compilazione, tutti i nostri NSLog() . #ifdef ... #endif , löschen Sie einfach die Definition der konstanten ACTIVE_NSLOG zu verblassen, die nächste Compilation, alle unsere NSLog() .

Ein bestes und endgültiges

Wir wollen nun sehen, wie Sie die XCode-Umgebung eingerichtet, um noch mehr, was wir hier getan haben, zu verbessern! Zuerst wählen wir einen konstanten Namen, die wir in unseren Projekten, von der Kompilierung ausschließen NSLog() . o quello che preferite. Sie können wählen, den Namen, den Sie mögen, von DEBUG zu MIO_DEBUG oder was auch immer Sie bevorzugen. Öffnen Sie Ihr Projekt, neu oder alt. Platzieren Sie alle NSLog() innerhalb des Blocks (oder Block):

1
2
3
# Ifdef MIO_DEBUG
" ... bla bla" ) ; NSLog (@ "... bla bla");
# Endif

Wählen Sie die Haupt-Datei des Projekts mit der rechten Maustaste und wählen Sie das Get Info.

getinfo

Dies öffnet ein Fenster mit Informationen über das Projekt:

userdefine

Wählen Sie das Register Erstellen, überprüfen Sie, ob Sie in Debug-Konfiguration sind (dies ist die Perle), auf die User-Defined Abschnitt und fügen über den Button unten links, ein neues Feld namens OTHER_CFLAGS . An dieser assegnamoli der Wert -DMIO_DEBUG=1 . Die Syntax ist -D{mia define}=1 .

Dieses Verfahren hat zwei Vorteile:

  1. Wir dürfen nicht in den Code gesetzt #define MIO_DEBUG 1 , aber wir tun es durch das Projekt Informationen. Also, wenn wir zum Ausfüllen des Release-Version (das eine ohne das gehen NSLog() ) müssen wir uns erinnern, um die Zeile zu löschen #define MIO_DEBUG 1
  2. Die Konstante wird in Bezug auf die Konfiguration definiert, in unserem Fall Debug. Dann werden Übergabe an die Release-Konfiguration (Freigabe) fehlen und die ständigen Reihen mit NSLog() wird nicht kompiliert werden

Schlussfolgerungen

Das oben beschriebene Verfahren kann in einem moltidutine anderen Fällen nützlich, mit NSLog() , nichts zu tun haben. Bedingte Anweisungen können helfen den Compiler in einer Vielzahl von Kontexten. Sie werden oft von Programmierern verwendet, um die Art der Version des Betriebssystems, das Ziel, die Anwesenheit von mathematischen Prozessoren, bestimmen unter Beibehaltung der gleichen "identisch" Quelle.

Um dies zu verstehen, als Beispiel, können wir unsere ständige utilizzre MIO_DEBUG auch in anderen Bereichen des Codes zu intervenieren:

1
2
3
4
5
6
7
8
9
10
/ / Debug, wenn sie das Spiel gewinnen
/ / Mit einem Ergebnis von 100 statt 10000 :)
# Ifdef MIO_DEBUG
score == 100 ) if (score == 100)
# Else
score == 10000 ) if (score == 10000)
# Endif
{
; [HaiVinto Self];
}

Zum Abschluss, hier sind einige Beispiele und Varianten:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/ / In der Regel gibt es eine
# Wenn Ausdruck
/ / If-Anweisung ähnlich der traditionellen, also mit einem vollen Ausdruck

/ / Prüfen, ob eine Konstante definiert
# Ifdef konstant

/ / Prüfen, ob es nicht eine Konstante definiert
# Ifndef konstant

/ / Else
# Else

/ / Closing des Blocks
# Endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Zum Beispiel ...
# Define DEBUG 1
# Definieren MIA_ALTRA_COSTANTE 5

...
# If DEBUG
/ / In diesem Fill
# Else
/ / Sonst füllen Sie dieses anderen
# Endif

# Wenn MIA_ALTRA_COSTANTE> 4
"..." ) ; NSLog (@ "...");
# Endif
1
2
3
4
# Ifndef INCLUDE_MIO_FILE
# Definieren INCLUDE_MIO_FILE
# Include "mio_file.h"
# Endif

Mehr ...

iPhone FirstApp: Guess the Zahl - Teil 1

Die erste Quelle, die ich in seine Hände gingen in Basic geschrieben wurde und bestand aus ein paar Zeilen Code, für mich aufschlussreich. Es war ein einfaches Spiel, das eine zufällige Zahl von 1 bis 10 erzeugt und durch Tastatureingabe, bewiesen, dass die eingegebene Zahl Maggione, weniger als oder gleich der Zufallszahl war. Trotz seiner rauen Einfachheit bleibt für mich eines der besten Beispiele - einfach, Spaß und praktisch - bis auf diejenigen, die nicht wissen, etwas über die Programmierung, was tatsächlich für "Computerprogramm" gemeint zu erklären. Also habe ich es für Apple iPhone vorschlagen entschieden, wird vielleicht jemand helfen ...

Mehr ...

Objective-C: Typkonvertierung

Bei einigen High-Level-Sprachen wie JavaScript oder PHP, wo Daten nicht typisiert sind oder auf andere Weise kann nicht sein, wir sind "verwöhnt" im Vergleich zu konvertieren oder Zeichenfolgen und ganze Zahlen und umgekehrt, alle versteckt oder vom Interpreter manipuliert (oder Compiler ). Zum Beispiel in JavaScript-Funktionen werden "gezwungen" (wie parseInt() zum Beispiel) in besonderen Fällen erforderlich. Allerdings unter anderen Umständen zu behandeln, ohne die ganzen Zahlen von besonderer Sorge Konvertierungen (explizit), wie zB:

1
2
3
5 ; mioNumero var = 5;
/ / ...
"Il valore di mioNumero è " + mioNumero ) ; alert ("Der Wert ist mioNumero" mioNumero +);

Objective-C ist jedoch der Datentyp wichtig und die Typkonvertierung muss ausdrücklich erklärt werden. Neben dem Casting (bessere Typumwandlung) können wir die Eigenschaften und Funktionen speziell für die Typkonvertierung. Zum Beispiel, hier ist, wie man eine ganze Zahl in einen String umgewandelt:

1
2
3
4
5 ; mioNumero int = 5;
miaStringa = [ NSString stringWithFormat : @ "%d" , mioNumero ] ; NSString * myString = [ NSString stringWithFormat: @ "% d", mioNumero];
/ /
"miaStringa=%@ mioNumero=%i" , miaStringa, mioNumero ) ; NSLog (@ "% @ myString = mioNumero =% s", myString, mioNumero);

Im Gegensatz dazu ist hier, wie eine Zeichenfolge in eine ganze Zahl zu konvertieren:

1
2
3
4
miaStringa = @ "128" ; NSString * myString = @ "128";
[ miaStringa integerValue ] ; mioNumero int = [myString integerWert];
/ /
"miaStringa=%@ mioNumero=%i" , miaStringa, mioNumero ) ; NSLog (@ "% @ myString = mioNumero =% s", myString, mioNumero);

Mehr ...

iPhone-Code-Snippet: UIAlertView

Die Klasse UIAletrView können Sie ein modales Fenster (animiert) anzuzeigen, um zu informieren und / oder dich etwas fragen. Die UIAlterView (Warnmeldungen anzeigen) sind sehr komfortabel und einfach zu bedienen. Der Umgang mit Benutzer-Reaktion wird durch das Abfangen der Index der Schaltfläche gedrückt gelöst. Um eine einfache Ansicht UIAlterView schreiben Sie einfach:

1
2
3
4
/ / Alert mit einem einfachen Knopf, ohne Rückruf
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" cancelButtonTitle : @ "Annulla" otherButtonTitles : nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titel" Nachricht: @ "Message" cancelButtonTitle: @ "Abbrechen" otherButtonTitles: nil];
; [MyAlert Show];
; [MyAlert release];

Und 'möglich, zusätzliche Schaltflächen fügen otherButtonTitles :

1
2
3
4
/ / Alert mit zwei einfachen Knöpfen, kein Rückruf
[ [ UIAlertView UIAlertView MyAlert * = [[UIAlertView
; [MyAlert Show];
; [MyAlert release];

: Um festzustellen, welche Taste gedrückt wurde, fügen Sie einfach den delegate:self der Initialisierung des Objektes UIAlterView :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Einfache Alarm mit zwei Tasten und Rückrufe
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titel" Nachricht: @ "Message" Delegierter: Selbst cancelButtonTitle: @ "Abbrechen" otherButtonTitles: @ "Ok", nil];
; [MyAlert Show];
; [MyAlert release];

/ / Der Rückruf hat die folgende Syntax

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex
buttonIndex ) { Schalter (buttonIndex) {
: Fall 1:
/ / Code
zu brechen;
}
}

Der Rückruf alertView müssen diese Namen haben, für weitere Informationen siehe UIAlertViewDelegate

punteranno sempre a quella. Mit nur der RÜCKRUF alertView:clickedButtonAtIndex mehr UIAletrView wird immer zu diesem Punkt. Mit dem Tag-Feld des Objekts UIAletrView , können wir bestimmen, was der "Anrufer":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/ / Einfache Alarm mit zwei Tasten und Rückrufe
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titel" Nachricht: @ "Message" Delegierter: Selbst cancelButtonTitle: @ "Abbrechen" otherButtonTitles: @ "Ok", nil];
; myAlertA.tag = 1;
; [MyAlertA Show];
; [MyAlertA release];

/ /
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView myAlertB * = [[UIAlertView alloc] initWithTitle: @ "Titel" Nachricht: @ "Message" Delegierter: Selbst cancelButtonTitle: @ "Abbrechen" otherButtonTitles: @ "Ok", nil];
; myAlertA.tag = 2;
; [MyAlertB Show];
; [MyAlertB release];

/ / Mehrere Management UIAlertView

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex
"Alert Tag: %i" , alertView.tag ) ; NSLog (@ "Alert-Tags:% s", alertView.tag);
"buttonIndex: %i" , buttonIndex ) ; NSLog (@ "buttonIndex:% s", buttonIndex);
}

Mehr ...

iPhone Objective-C: Gleichwertigkeit in der Syntax

Die Syntax mit eckigen Klammern in Objective-C ist einer der Gründe, die meisten Frustration für diejenigen, die aus anderen Sprachen (für Objekte). Jedoch daran gewöhnen, merkt man, wie der Code lesbar zu wird mit dieser Mischung aus klassischen und der Syntax deutlicher Smalltalk. Zum Beispiel haben wir sehen, wie das gleiche Verfahren wie in sowohl Syntax geschrieben werden können. Nehmen Sie die Initialisierung eines UIAlertView :

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titel"
"Messaggio" Nachricht: @ "Message"
Delegierter: Selbst
"Annulla" cancelButtonTitle: @ "Abbrechen"
"Ok" , nil ] ; otherButtonTitles: @ "Ok", nil];
; myAlert.tag = 1;
; [MyAlert Show];
; [MyAlert release];

Einstellen der Tag potavamo es sogar so:

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Titel"
"Messaggio" Nachricht: @ "Message"
Delegierter: Selbst
"Annulla" cancelButtonTitle: @ "Abbrechen"
"Ok" , nil ] ; otherButtonTitles: @ "Ok", nil];
1 ] ; [MyAlert Einstellungen: 1];
; [MyAlert Show];
; [MyAlert release];

Das Gleiche gilt bei der Lektüre während der Veranstaltung:

1
2
3
4
5
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex
alertView.tag == 1 ) { // ... if (alertView.tag == 1) {/ / ...
/ / Oder
alertView tag ] == 1 ) { // ... if ([alertView tag] == 1) {/ / ...
}

Hinweis: Nicht alle Eigenschaften und Methoden haben diese doppelte Syntax. Im Fall von ' UIAlertView wir haben diese doppelte Funktion. Bei anderen Objekten oder in anderen Fällen kann jedoch nur funktionieren, eine von zwei ... aber frag nicht warum (je nachdem, wie die Entwickler haben das Interface definiert).

Mehr ...

Trace Actionscript, Objective-C NSLog ()

, usata per il debug delle applicazioni. Amtsantritt von Actionscript zu Objective-C (wo Sie den Code setzen und den Vergleich der Syntax Actionscript und Objective-C) im ActionScript haben wir die komfortable Funktion trace ( ) , für das Debuggen von Anwendungen eingesetzt. Diese Funktion gibt eine Ausgabe an die Konsole Adobe Flash-Entwicklungsumgebung. Es wird hauptsächlich während der Entwicklung und Erprobung von "Film" / Anwendung verwendet wird. In XCode / Objective-C haben wir: NSLog ( ) . di Actionscript: Die Syntax dieser Funktion ist sehr ähnlich wie die trace ( ) in Actionscript:

1
"Sono una linea di debug" ) ; NSLog (@ "Ich bin ein Debug-Linie");

In Actionscript haben wir:

1
"Sono una linea di debug" ) ; trace ("Ich bin ein Debug-Linie");

Neben der Verwendung von Zeichen (@), wie Sie sehen können, sind identisch. Die Unterschiede (und Gemeinsamkeiten) starten, wenn Sie auf Werte von Variablen anzuzeigen, zum Beispiel in Actionscript wir haben wollen:

1
2
3
"Coordinata x:" + x + " coordinata y:" + y ) ; trace ("x-Koordinate:" + x + "y-Koordinate:" + y);
/ / Oder
"Coordinate: " , x , y ) ; Spur ("Koordinaten", x, y);

In Objective-C haben wir:

1
"Coordinata x:%i coordinata y:%i" , x, y ) ; NSLog (@ "x-Koordinate: die y-Koordinate%% i", x, y);

che opera sull'Apple System Log. Hinweis: NSLog() , ruft die generische Funktion mehr NSLogv ( ) , die auf Apple-System-Log funktioniert. Die Funktionen sind in der Tat identisch, ändern nur die Input-Parameter.

o sprintf ( ) . C-Entwickler finden Sie sehr vertraut mit der Formatierung von Strings, wie bei printf ( ) oder sprintf ( ) . Einzelheiten finden Sie unter String Formatbezeichner .

Mehr ...

Sehr kurze Trick: stop NSTimer

Die Verwendung von Timern ( NSTimer ), um Anwendungen für das iPhone zu entwickeln, ist sehr häufig, nicht nur in Spiele zu machen. Eines der Probleme, mit denen man kollidieren ist die Ungleichzeitigkeit des Timers, die führen, können während der Verhaftung von einem oder mehreren Timer, der Absturz unserer Anwendung. , si invoca la invalidate che, appunto, arresta il timer. Wenn Sie einen oder mehrere Timer, wo aufhören wollen repeats zu setzen ist YES , nennen Sie das invalidate , dass in der Tat, den Timer anhalten.

Mehr ...



Stop SOPA