Warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: SELECT * FROM variable in /var/www/web1030/html/mkernel.de/includes/database.mysql.inc on line 128

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 726

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 727

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 728

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 729
[iPhone / ObjC] One App, One Week | Drupal

[iPhone / ObjC] One App, One Week

  • warning: Cannot modify header information - headers already sent by (output started at /var/www/web1030/html/mkernel.de/includes/database.mysql.inc:128) in /var/www/web1030/html/mkernel.de/includes/common.inc on line 148.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: UPDATE variable SET value = 'a:17:{i:0;i:62;i:1;i:61;i:2;i:59;i:3;i:31;i:4;i:30;i:5;i:29;i:6;i:24;i:7;i:21;i:8;i:15;i:9;i:14;i:10;i:11;i:11;i:7;i:12;i:6;i:13;i:5;i:14;i:3;i:15;i:2;i:16;i:1;}' WHERE name = 'menu_masks' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 609.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: UPDATE variable SET value = 'a:0:{}' WHERE name = 'menu_expanded' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 609.
  • user warning: Table './usr_web1030_3/variable' is marked as crashed and should be repaired query: DELETE FROM variable WHERE name = 'menu_rebuild_needed' in /var/www/web1030/html/mkernel.de/includes/bootstrap.inc on line 634.

Ich hab' die Werbesprüche bei der Einführung von Apple ja nicht wirklich geglaubt. Spielbare Versionen von Spielen in 2 Wochen inklusive Training auf einer neuen Programmiersprache zu erstellen wirkte irgendwie Utopisch. Nun da ich eine App aus privaten Gründen zusammenstricken musste, stelle ich fest: Das ist in der Tat möglich und wohl nicht mal ein Problem.

Ich habe eine Applikation für iPhone und iPod touch zusammengebaut, die aus mehreren (insgesamt 14) Dialogen besteht. Einer davon geht zwingend im Querformat auf. Die Featureliste ist relativ lang für eine App, die innerhalb einer Woche in meiner Freizeit entstanden ist:

  • Core Data
  • Anwendung von Table-Views, inklusive Delegate und Datenquelle, mit und ohne direkte Core Data Bindung
  • Ein selbst gezeichneter View für ein Diagramm. Standardelemente (Knöpfe, Titelzeile, Statuszeile) können ein- und ausgeblendet werden.
  • Mailversand, ohne Anhänge, mit den vorliegenden Daten als .CSV oder mit dem Diagramm als PDF.
  • Erzeugung von PDF-Dateien direkt auf dem mobilen Gerät.
  • Integration in die Systemeinstellungen

Genau zwei Sachen fehlen noch: Der Splash-Screen und das Applikationsicon. Das macht allerdings jemand anders. Auf jeden Fall ist es möglich, innerhalb von 2 Wochen Vollzeit ein Spiel aus dem Boden zu stampfen. Frei nach dem Motto "Simple things simple, complex things possible" ist die Einstiegshürde für die Programmierung niedrig. Nicht normale Dinge (wie fest gedrehte Dialoge oder das Zeichnen) sind dagegen schwieriger bei den ersten Versuchen.

Einiges ist mir dabei hängen geblieben:
[UIView layoutSubviews] ist sehr hilfreich.
Core Data ist super, nur das bools als NSNumber abgebildet sind, nervt. Dadurch funktioniert if(obj.isActive) nicht, sondern man muss if([obj.isActive boolValue]) benutzen.
Nachladen von Dialogen aus NIBs: Das entladen dieser Dialoge ist nicht vorgesehen Es ist daher sinnlos, sie nach der shoot-and-forget-Strategie immer dann zu laden, wenn der Dialog gebraucht wird. Er sollte nur ein mal geladen und dann wiederverwendet werden. Da habe ich seid ich diesen Artikel ursprünglich geschrieben habe dazugelernt. Es ist sehr wohl möglich, NIB-basierte Dialoge zu entladen und sogar erwünscht.

Als nächstes muss die App lokalisiert werden und ein icon bekommen. Vielleicht schiebe ich sie in den App Store, mal sehen.Inzwischen ist die Applikation eingereicht und zum Download verfügbar.

Happy Coding!