Falls ihr auch mal wieder auf der Suche nach passenden Symbole für eure mobilen Apps seid hier ein Tipp. Glyphish stellt unter einer freien Lizenz 200 Symbole zur Verfügung. Für 25 US Dollar gibt’s nochmal 200 Symbole drauf und zusätzlich auch in doppelter Auflösung für Retina Displays.
Schlagwort: iOS
UUID unter iOS erstellen
Auf ManiacDev.com wurde es gerade nochmals gepostet: Apple weist Apps die auf die Hardware ID zur Identifzierung setzen zurück. Als Alternative bietet sich die Verwendung von UUIDs auf iOS an, wie im Artikel How to Replace the UDID Ole Begemann beschrieben.
Hier noch eine Änderung, für die die bereits ARC in ihren Projekten verwenden. Der Rückgabewert von CFUUIDCreateString
darf nicht nur als NSString
gecastet werden, sondern muss zusätzlich als __bridge
gekennzeichnet werden.
Non-ARC Version
uuidString = (NSString *)CFUUIDCreateString(NULL, uuid); ... return [uuidString autorelease];
ARC Version
uuidString = (__bridge NSString *)CFUUIDCreateString(NULL, uuid); ... return uuidString;
Sichere iOS App
Ich lese gerade das Buch von Jonathan Zdziarski „Hacking and Securing iOS Applications“.
Um den Lebenszyklus eine iOS App zu verstehen hilft der Artikel Application’s Life Cycle in iOS4. Eine lesenswerte Lektüre ist der Apple Secure Coding Guide.
Core Animation lernen
- Core Animation wird auf den Layer der UIView angewendet
- Durch die statischen Methoden [UIView beginAnimation…] wird das Aktualisieren der View eingefroren, sozusagen ein Wiederherstellungspunkt angelegt.
- UIViews können nur
CABasicAnimations
verwenden. - Durch die statische Methode
[UIView commit]
wird das Änderungslock aufgehoben, die in der Animationsdefinition festgelegten Werte kommen nun zur Anwendung. Es wird immer der Layer-Teil der View animiert. - Die
CAAnimation
als auch dieCAKeyFrameAnimation
wird direkt dem Layer zugeordnet. - Anstelle von Views können für grafische UIs auch Layern verwendet werden. Diese können aber kein Touch-Handling. Dafür wird ein HitTest ausgeführt.
Verwenden von NSUserDefaults
Ich bin aktuell dabei (ein Neujahrsprojekt) ein iOS Projekt zu vollenden. Es ist nur ein kleines Helferlein, das mir von einem beliebigen Datum die Kalenderwoche anzeigen soll.
Wenn das Programm nun beendet oder unterbrochen wird stellt sich mir die Frage, wie soll ich bestimmen, ob das Programm neu gestartet wurde oder nur aus dem Backgroundmode zurück kommt? Und der Anwender soll bestimmen können, wie das Verhalten für ihn am Besten anzuwenden ist. Hier kommt nun die Singleton-Klasse NSUserDefaults ins Spiel.
Das Verwenden der Klasse ist recht einfach. Was ich für mich klären wollte
- Wie kann ich Factory Settings definieren?
- Wie werden Factory Settings angewendet?
- Wann ist der optimale Zeitpunkt zum Speichern der geänderten Settings?
Laut Doku wird dafür registerDefaults
verwendet. Bedingung ist, es müssen Objekte in einem NSArray gespeichert werden. Wie geht das? Mit der Klasse NSNumber
. Mit dieser Klasse kann ich nun meine BOOL
Werte mit [NSNumber numberWithBool:YES]
als Einstellung speichern. Das Abfragen der Werte erfolgt dann wieder über das NSNumber-Objekt mit [[NSUserDefaults standardDefaults] boolForKey:@"keyName"
. Die Werte aus dem registerDefaults werden dann verwendet, wenn es keinen Benutzersetting gibt.