Kategorie "D"
Saidmade Ltd , trotz der scheinbaren Moment der Krise, stellt eine große Chance für junge Computer-Enthusiasten. Die "richtigen Job Angebot richtet sich an all jene, die möchten, als Entwickler, ein Beruf, der Leidenschaft und Begierde verlangt, oft unterschätzt, besonders hier in Italien zu arbeiten angesprochen. Das Unternehmen, von denen ich Mitglied bin, dann ist für einen Programmer / Junior Programmer mit den folgenden Anforderungen gesucht:
- Alter zwischen 18 und 27 Jahren und eine gute Portion Kreativität
- Grundlegende Kenntnisse in der Programmierung und vor allem der Sprache ANSI-C
Der Wunsch, Wissen zu erwerben:
- OO
- PHP
- JavaScript
- Adobe Actionscript
- C + + / Objective-C
Es ist auch ein Vorteil des Wissens:
Wenn Ihr Profil und Ihre Interessen in den oben reflektiert werden, senden Sie bitte Ihren Vorschlag, condidatura: info@saidmade.com
Fortsetzung ...
Die IDE Aptana ist auch als Plugin für verfügbare Eclipse- . Eines der beliebtesten Features von diesem Umfeld ist eine ausgezeichnete FTP-Management und Datei-Synchronisation / lokale Projekte mit der Fernbedienung. Insbesondere gibt es ein Skript, das Sie den Code derzeit senden in das Editor-Fenster auf den Server remote mit Hilfe der Tastenkombination STRG + SHIFT + COMMAND + SHIFT + U oder U auf Mac OS (die gleiche Kombination ist in Adobe Dreamweaver verwendet). Erlaubt In einigen Anlagen (zum Beispiel meinen Mac OS, mit Aptana und Eclipse Plugin) diese Kombination scheint zu fehlen, und wenn Sie es in den Einstellungen Spur versuchen> General> Keys nicht finden - geheimnisvoll - nichts! Das Problem ist jedoch, leicht gelöst und hängt von der Überlappung von einer anderen Einstellung. Es ist offensichtlich, dass die Kombination der oben genannten Tasten standardmäßig mit einer anderen Funktion eingestellt ist: Zeigt Vorkommen in Datei Quick Menu. Dann öffnen Sie einfach die Seite für die Einstellungen> Allgemein> Keys und occ .. Blick zeigt:

Rimuivere die "Bindung", dh eine Vereinigung mit der Tastenkombination, und es wird funktionieren!
Fortsetzung ...
Das Apple iPhone bietet eine begrenzte Anzahl von Schriften für Entwickler. Die Liste der verfügbaren Schriften ist leicht durch den Code erreicht, wie wir sehen werden. Wenn Sie Ihre eigenen Schriftarten, wie z. B. die Aufnahme in den Ressourcen nutzen wollen, ist es ein wenig mehr zu artikulieren und conivolge auch die Erteilung von Lizenzen (Rechte) "einbetten" Schriftarten ... wir reden später. Drehen statt auf die offiziellen Quellen in der iPhone sind sie (auf Bild klicken zum Vergrößern):
Das Apple iPhone SDK ermöglicht den Zugriff auf die speziellen System-Fonts. Diese werden durch spezielle 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 ODEI Schriften im Bild oben gezeigt verwenden:
1
| [ UIFont fontWithName : @ "Helvetica-Bold" size : 22.0 ] ; UIFont myCustomFont * = [UIFont fontWithName: @ "Helvetica-Bold" Größe: 22,0]; |
Wie Sie sehen können die Verwaltung der Schriftarten ist das Besondere, neben der Familie (Helvetica, Courier, etc ...) müssen die Art (fett, kursiv, etc. angeben ...). In der Praxis muss daher eine Schrift mit diesen Merkmalen ausgestattet werden. Die Helvetica, zum Beispiel, wird vertreten durch:
1 2 3 4
| Helvetica Helvetica-Bold Helvetica-Oblique Helvetica-BoldOblique |
Wenn Sie Ihre Schriften direkt auf dem iPhone anzeigen lassen möchten, sind 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 (@ "+-----> Type:% @ ", [subFontTypes objectAtIndex: j]); } ; [SubFontTypes release]; } ; [ListOfFonts release]; |
Mit dem SDK 2.2.1 auf meinem Simulator, 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-BoldOblique +-----> Typ: Courier-Oblique +-----> Typ: Courier-Bold Schriftfamilie: AppleGothic +-----> Typ: AppleGothic Schriftfamilie: Arial +-----> Typ: ArialMT +-----> Typ: Arial-BoldMT +-----> Typ: Arial-BoldItalicMT +-----> Typ: Arial-ItalicMT Schriftfamilie: sthe TC +-----> Typ: Light-STHeitiTC +-----> Type: 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: sthe SC +-----> Type: Medium-STHeitiSC +-----> Typ: Light-STHeitiSC Schriftfamilie: American Typewriter +-----> Typ: AmericanTypewriter +-----> Typ: AmericanTypewriter-Bold Schriftfamilie: Helvetica +-----> Typ: Helvetica-Oblique +-----> Typ: Helvetica-BoldOblique +-----> 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 Schriftfamilie: 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: Georgia +-----> Typ: Georgia-Bold +-----> Typ: Georgien +-----> Typ: Georgia-BoldItalic +-----> Typ: Georgia-Italic Schriftfamilie: sthe J +-----> Type: 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: sthe K +-----> Type: Medium-STHeitiK +-----> Typ: Light-STHeitiK |
Fortsetzung ...
<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 den frühen Phasen eines Projekts zum Testen und Debuggen einer Anwendung für Apple iPhone oder ganz allgemein in die XCode-Umgebung. Da nur eine Funktion, genau wie die anderen, wird seine Anwesenheit auch zu spüren sein, wenn die Freigabe (Release) unserer ausführbar. potrebbero influire sulle performance della nostra applicazione, soprattutto se abbiamo inserito NSLog() all'interno di loop. Es wird dann notwendig, zu entfernen, in gewisser Weise alle Zeilen in NSLog() aus dem Code entfernen, weil sie nicht mehr benötigt wird, und weil Anrufe an NSLog() konnte die Leistungsfähigkeit unserer Anwendung auswirken, insbesondere wenn wir setzen NSLog() , um "inneren Schleife.
Unmittelbar auszuschließen Lösung für das "Look" und "Abbrechen", weil es eines Tages wieder verwendet werden könnten. Wir schließen die Lösung der "Look" und "Kommentare", unbequem aus dem gleichen Grund wie zuvor. Zum Glück, eine saubere, einfache, und den richtigen Compiler conditionals. Was wir in der Praxis zu tun, und sagen, dass der Compiler auszuschließen - wenn es einen bestimmten Zustand - bei der Erstellung unserer Quelle Linien enthalten NSLog() .
Die Compiler-Direktiven und Compiler bedingte Anweisungen, sind ein sehr mächtiges und weit verbreitet. Diejenigen, die aus der Entwicklung der ANSI-C sehr gut kennt und wird definitiv in vielen Situationen utilizzte. Die Besonderheit dieser "Anleitung" liegt in der Tatsache, oben erwähnt, durch den Compiler zu sehen und nicht ausführbar. Diese Eigenschaft macht sie in vielen Fällen nützlich und kann Probleme lösen, sonst sehr ärgerlich.
Lassen Sie uns ein Beispiel-Code, der, wie vorhergesagt, Sie "Löschen" kann von der Erstellung von Code-Share, in unserem Fall sehen NSLog() :
1 2 3 4 5 6
| # Define ACTIVE_NSLOG 1 / / Wenn die Konstante definiert ist ACTIVE_NSLOG füllen / / Der Block von Code zwischen # ifdef und # endif # Ifdef ACTIVE_NSLOG " ... bla bla" ) ; NSLog (@ "... blah blah"); # Endif |
). Bedingte Anweisungen sind Teil des Compilers 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 ; nachfolgenden Zeilen Code weist den Compiler an "include" Zeile NSLog() nur dann, wenn ACTIVE_NSLOG definiert ist. Wenn wir kümmerten, während des Schreibens von unseren Code, um Anrufe zu 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 verschwinden, die nächste Compilation, alle unsere NSLog() .
Ein bestes und endgültiges
Lassen Sie uns nun sehen, wie 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 zu verwenden, um aus der Kompilierung ausschließen NSLog() . o quello che preferite. Sie können wählen, den Namen, den Sie möchten, von DEBUG zu MIO_DEBUG oder was auch immer Sie bevorzugen. Öffnen Sie Ihr Projekt, neu oder alt. Geben Sie alle NSLog() innerhalb des Blocks (oder Block):
1 2 3
| # Ifdef MIO_DEBUG " ... bla bla" ) ; NSLog (@ "... blah blah"); # Endif |
Wählen Sie die Haupt-Datei Ihres Projekts, klicken Sie die rechte Maustaste und wählen Sie das Get Info Element.

Es öffnet sich das Fenster mit Informationen über das Projekt:

Wählen Sie das Register Erstellen, überprüfen Sie, ob Sie in der Debug-Konfiguration (das ist die Perle) sind, um die User-Defined Abschnitt und fügen über den Button unten links, ein neues Feld namens OTHER_CFLAGS . Bei diesem Wert assegnamoli -DMIO_DEBUG=1 . Die Syntax ist -D{mia define}=1 .
Dieses Verfahren hat zwei Vorteile:
- Wir dürfen nicht in den Code eingefügt,
#define MIO_DEBUG 1 , aber wir tun es durch das Projekt Informationen. Also, wenn wir füllen die Release-Version (die man ohne unterwegs NSLog() zu tun) nicht daran denken, die Zeile zu löschen #define MIO_DEBUG 1 - Die Konstante ist in Bezug auf die Konfiguration, in unserem Fall Debug definiert. So wird die Umstellung auf Konfiguration (release) Release fehlen und die ständige Zeilen mit
NSLog() wird nicht kompiliert werden
Schlussfolgerungen
Das oben beschriebene Verfahren kann in einer moltidutine anderen Fällen nützlich sein, mit NSLog() , nichts zu tun haben. Bedingte Anweisungen helfen kann der Compiler in einer Vielzahl von Kontexten. Sie werden oft von Programmierern verwendet, um den Typ des Betriebssystems, die Version, das Ziel, die Präsenz der mathematischen Prozessoren, bestimmen unter Beibehaltung der gleichen "gleichen" Quelle.
Um zu verstehen, als Beispiel, können wir utilizzre unser ständiger 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 zu gewinnen / / Mit einer Punktzahl 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 # Wenn der Ausdruck / / If-Anweisung ähnlich der traditionellen, so mit einem vollen Ausdruck
/ / Überprüfen, ob eine Konstante definiert ist # Ifdef konstant
/ / Prüfen, ob es sich NICHT um eine definierte # Ifndef konstant
/ / Else # Else
/ / Schließen Sie den Baustein # Endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| / / Zum Beispiel ... # Define DEBUG 1 5 # define MIA_ALTRA_COSTANTE
... # Wenn 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 # Define INCLUDE_MIO_FILE # Include "mio_file.h" # Endif |
Fortsetzung ...
Die erste Quelle, die ich in meine Hände erhob, war in Basic geschrieben und bestand aus ein paar Zeilen Code, für erhellende mich. Es war ein einfaches Spiel, das eine Zufallszahl generiert von 1 bis 10, und durch Tastatureingabe, ob die eingegebene Zahl Maggioni wurde, weniger als oder gleich der Zufallszahl. Trotz seiner rauen Einfachheit bleibt für mich eines der besten Beispiele - einfach, Spaß und praktisch - zu denen, die nichts weiß über die Programmierung, was eigentlich für "Computer-Programm" gemeint zu erklären. Also habe ich es für Apple iPhone vorschlagen entschieden haben, werden vielleicht jemand helfen ...
Fortsetzung ...
Bei einigen High-Level-Sprachen wie JavaScript oder PHP, wo die Daten nicht eingegeben werden oder auf andere Weise kann nicht sein, wir sind "verwöhnt" in Vergleichen oder Konvertieren von Strings und Zahlen und umgekehrt, alle versteckten oder durch den Dolmetscher manipuliert (oder Compiler ). Zum Beispiel sind in JavaScript-Funktionen "gezwungen" (wie parseInt() zum Beispiel) benötigt in besonderen Fällen. Aber auch in anderen Umständen wir behandeln, ohne sich Gedanken über ein spezielles integer Konvertierungen (explizit), wie zB:
1 2 3
| 5 ; mioNumero var = 5; / / ... "Il valore di mioNumero è " + mioNumero ) ; alert ("Der Wert der mioNumero ist" + mioNumero); |
In Objective-C, jedoch ist der Datentyp wichtig und die Typkonvertierung müssen explizit sein. Neben dem Gießen (besser typecasting) können wir die Eigenschaften und Funktionen speziell für die Typkonvertierung. Zum Beispiel, hier ist, wie man eine ganze Zahl in einen String zu konvertieren:
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% =% i", myString, mioNumero); |
Im Gegensatz dazu ist hier, wie man einen String in einen Integer 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% =% i", myString, mioNumero); |
Fortsetzung ...
Die Klasse UIAletrView ermöglicht es Ihnen, ein modales Fenster (animiert) Display zu informieren und / oder dich etwas fragen. Die UIAlterView (view Warnungen) sind sehr komfortabel und einfach zu bedienen. Die Verwaltung von Benutzer-Reaktion wird durch das Abfangen der Index der Taste gelöst. Um eine einfache UIAlterView schreiben Sie einfach:
1 2 3 4
| / / Alert mit einem einfachen Knopfdruck, ohne Rückruf [ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" cancelButtonTitle : @ "Annulla" otherButtonTitles : nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Title"-Meldung: @ "Message" cancelButtonTitle: @ "Cancel" otherButtonTitles: nil]; ; [MyAlert show]; ; [MyAlert release]; |
Und 'möglich, zusätzliche Tasten otherButtonTitles :
1 2 3 4
| / / Alert mit zwei einfachen Knöpfen, kein Rückruf [ [ UIAlertView UIAlertView MyAlert * = [[UIAlertView ; [MyAlert show]; ; [MyAlert release]; |
: Um zu bestimmen, 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
| / / Simple 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: @ "Title"-Meldung: @ "Message" zu delegieren: self cancelButtonTitle: @ "Cancel" otherButtonTitles: @ "OK", nil]; ; [MyAlert show]; ; [MyAlert release];
/ / Die Callback sieht wie folgt aus
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex buttonIndex ) { switch (buttonIndex) { : Fall 1: / / Code break; } } |
Der Rückruf alertView müssen diesen Namen haben, für weitere Informationen siehe UIAlertViewDelegate
punteranno sempre a quella. Mit nur RÜCKRUF alertView:clickedButtonAtIndex mehr UIAletrView wird immer zu diesem Punkt. Mit dem Tag des Feldes 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
| / / Simple 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: @ "Title"-Meldung: @ "Message" zu delegieren: self cancelButtonTitle: @ "Cancel" otherButtonTitles: @ "OK", nil]; ; myAlertA.tag = 1; ; [MyAlert show]; ; [MyAlert release];
/ / [ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView myAlertB * = [[UIAlertView alloc] initWithTitle: @ "Title"-Meldung: @ "Message" zu delegieren: self cancelButtonTitle: @ "Cancel" otherButtonTitles: @ "OK", nil]; ; myAlertA.tag = 2; ; [MyAlertB show]; ; [MyAlertB release];
/ / Multiple Management UIAlertView
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex "Alert Tag: %i" , alertView.tag ) ; NSLog (@ "Alert Tags:% i", alertView.tag); "buttonIndex: %i" , buttonIndex ) ; NSLog (@ "buttonIndex:% i", buttonIndex); } |
Fortsetzung ...
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). Doch daran zu gewöhnen, merkt man, wie der Code lesbar zu wird mit dieser Mischung aus klassischer und deutlicher Syntax Smalltalk. Zum Beispiel sehen wir, wie das gleiche Verfahren in beiden 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: self "Annulla" cancelButtonTitle: @ "Cancel" "Ok" , nil ] ; otherButtonTitles: @ "OK", nil]; ; myAlert.tag = 1; ; [MyAlert show]; ; [MyAlert release]; |
Die Einstellung 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: self "Annulla" cancelButtonTitle: @ "Cancel" "Ok" , nil ] ; otherButtonTitles: @ "OK", nil]; 1 ] ; [MyAlert EINSTELLUNG: 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 haben wir diese doppelte Funktionalität. Bei anderen Objekten oder in anderen Fällen könnte jedoch nur eine der beiden arbeiten ... aber fragen Sie nicht warum (je nachdem, wie die Entwickler haben das Interface definiert).
Fortsetzung ...
, usata per il debug delle applicazioni. Anknüpfend an den Beitrag von Actionscript zu Objective-C (wo Sie vergleichen den Code und Syntax ActionScript und Objective-C), haben wir die praktische Funktion in ActionScript trace ( ) , für das Debuggen von Anwendungen verwendet. Diese Funktion gibt eine Konsole auf dem Adobe Flash-Entwicklungsumgebung. Es ist vor allem für das Debuggen und Testen von "movie" / 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 Debuggen einer Linie"); |
In Actionscript haben wir:
1
| "Sono una linea di debug" ) ; trace ("Ich bin Debuggen einer Linie"); |
Abgesehen von der Verwendung des Zeichens (@), wie Sie sehen können, sind identisch. Die Unterschiede (und Gemeinsamkeiten) zu starten, wenn Sie die Werte der Variablen, zum Beispiel in Actionscript haben wir anzeigen möchten:
1 2 3
| "Coordinata x:" + x + " coordinata y:" + y ) ; trace ("x-Koordinate:" + x + "y-Koordinate:" + y); / / Oder "Coordinate: " , x , y ) ; trace ("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 mehr generische Funktion NSLogv ( ) , die auf die Umsetzung System Log betreibt. Die Funktionen sind in der Tat identisch, ändern nur die Input-Parameter.
o sprintf ( ) . Die Entwickler finden sehr vertraut mit den C-String-Formatierung, wie bei printf ( ) oder sprintf ( ) . Weitere Informationen finden Sie String Formatbezeichner .
Fortsetzung ...
Die Verwendung von Timern ( NSTimer ), um Anwendungen für Apple iPhone zu entwickeln, ist sehr häufig, nicht nur in Spiele zu machen. Eines der Probleme, mit denen man kollidieren wird die Asynchronität der Timer, der führt, kann bei der Verhaftung von einem oder mehreren Timer, der Absturz der Anwendung. , si invoca la invalidate che, appunto, arresta il timer. Wenn Sie einen oder mehrere Timer, wo aufhören wollen repeats eingestellt ist YES , ruft es die invalidate , die gerade, wird die Zeit gestoppt.
Fortsetzung ...
Neueste Kommentare
Mark : @ Mark: Danke für die Antwort. Zum Beispiel, wenn Sie einen Code zum Speichern / haben Sie die Ordner ...
Mark : Danke für die Antwort. Zum Beispiel, wenn Sie einen Code zum Speichern / haben Sie die Ordner ...
Giovambattista Fazioli : @ Mark: Im Prinzip, absolut, hängt viel ab, wie und was zum Download bereit. La ..
Mark : Hallo, guter Führer! Ich wollte fragen, können Sie den gleichen Code, um eine SQL-Datenbank laufen? Statt ...
Joseph : Hallo Ich wollte Sie fragen, wie können Sie in der Post finde ich hochgeladen einer Galerie von 50 Bildern, zum Beispiel ...