thomas.dohmke.de - tagged with iphone http://thomas.dohmke.de/feed en-us http://blogs.law.harvard.edu/tech/rss Sweetcron thomas@dohmke.de Download Statistics for Ruby Helper http://thomas.dohmke.de/items/view/459/download-statistics-for-ruby-helper

Ruby Helper is now available in the App Store for more than 8 weeks, so we think it's time to take a look at the download statistics. With the end of the 8th week of it's approval, the app has been downloaded 1679 times including 593 upgrades from 1.0 to 1.1. Relating the number of upgrades to the number of downloads before the release of version 1.1 results in an upgrade rate of currently 65%.

After the initial peak, the average number of downloads per week seems to settle at about 80. The lowest daily value was 9 downloads, the highest 119 downloads on the first day or 215 downloads when including the number of upgrades on the first full day of version 1.1 (4th of May).

Looking at the countries, the most downloads came from the USA with about 45% of all downloads. Second is Japan with 11% followed by Germany with 7%, the UK with 5% and France with 3%. All other countries are below 3%. (It would be interesting to correlate this data with the distribution of Ruby developers as well as sold iPhones in these countries...)

Last but not least, three user wrote a review in the App Store, two of them voted with 4 stars, one with 5 stars. The average value of all ratings (including those without text) is 3.5 stars.

]]>
Sun, 24 May 2009 18:47:00 +0200 http://thomas.dohmke.de/items/view/459/download-statistics-for-ruby-helper
Ruby Helper 1.1 http://thomas.dohmke.de/items/view/392/ruby-helper-11

Heute erschien endlich Version 1.1 unserer App Ruby Helper im App Store. Es enthält die folgenden neuen Dokumente:

RSpec 1.2.4

4 Texte 75 Klassen 26 Module 513 Methoden

Spec::Rails 1.2.4

3 Texte 19 Klassen 12 Module 93 Methoden

Webrat 0.4.4

2 Texte 18 Klassen 7 Module 136 Methoden

Wir arbeiten außerdem an einem Feature, welches es ermöglicht, weitere Dokumente direkt aus der App runterzuladen (beispielsweise für Ruby 1.9). Voraussichtlich wird dieses Feature aber erst mit dem Release von iPhone OS 3.0 im Sommer veröffentlicht.

]]>
Wed, 06 May 2009 03:28:00 +0200 http://thomas.dohmke.de/items/view/392/ruby-helper-11
Drei Links zum Sonntag (XIV) http://thomas.dohmke.de/items/view/332/drei-links-zum-sonntag-xiv

Heute mal drei Links ohne Kommentare:

Wizzley Presto and the Mysterious Time Machine [or how to make an iPhone game in 30 days] A long, rambly exploration of the state of computing with no real conclusion follow And now: random thoughts on iPhone UI issues and things and such

]]>
Sun, 19 Apr 2009 18:17:00 +0200 http://thomas.dohmke.de/items/view/332/drei-links-zum-sonntag-xiv
iPhone Code Schnipsel: Kennung des Gerätes http://thomas.dohmke.de/items/view/321/iphone-code-schnipsel-kennung-des-gerates

Gesucht

Die Kennung (Identifier bzw. UDID) eines iPhone oder iPod Touch programmatisch ermitteln.

Lösung

UIDevice *device = [UIDevice currentDevice]; NSString *uniqueIdentifier = [device uniqueIdentifier];

UIDevice bietet außerdem Instanzmethoden zur Bestimmung von Name (name) und Modell (model) des Gerätes sowie Name (systemName) und Version (systemVersion) des Betriebssystems. Beispiel für mein iPhone:

Name: MyPhone Model: iPhone SystemName: iPhone OS SystemVersion: 2.2.1

]]>
Sat, 18 Apr 2009 13:11:00 +0200 http://thomas.dohmke.de/items/view/321/iphone-code-schnipsel-kennung-des-gerates
iPhone Code Schnipsel: Den Benutzer warten lassen http://thomas.dohmke.de/items/view/320/iphone-code-schnipsel-den-benutzer-warten-lassen

Gegeben

Der Benutzer füllt seine Benutzerdaten in zwei Textfelder ein und klickt dann auf Login. Anschließend wird ein Request an den Server gesendet und abhängig von der Antwort zum Hauptmenü gewechselt oder eine Fehlermeldung angezeigt.

Gesucht

Während des Wartens auf die Antwort soll die aktuelle Ansicht durch ein HUD mit einem UIActivityIndicatorView überlagert werden.

Lösung

Wir laden die Klasse SFHFHUDView in Form der beiden Dateien SFHFHUDView.h und SFHFHUDView.m von GitHub runter und binden diese in unser Xcode-Projekt ein. Anschließend kann das HUD wie folgt erzeugt und angezeigt

SFHFHUDView *HUDView = [[SFHFHUDView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [HUDView setStatusText:@"Connecting..."]; [HUDView setShowsStatusLabel:YES]; [HUDView startActivityIndicator]; [HUDView makeKeyAndVisible];

sowie später wieder entfernt werden:

[HUDView resignKeyWindow]; [HUDView setHidden:YES];

]]>
Fri, 17 Apr 2009 18:33:00 +0200 http://thomas.dohmke.de/items/view/320/iphone-code-schnipsel-den-benutzer-warten-lassen
iPhone Code Schnipsel: Eingestellte Sprache http://thomas.dohmke.de/items/view/319/iphone-code-schnipsel-eingestellte-sprache

Gesucht

Welche Sprache hat der Benutzer auf seinem iPhone oder iPod Touch eingestellt?

Lösung

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; NSArray* allLanguages = [defaults objectForKey:@"AppleLanguages"]; NSString* currentLanguage = [allLanguages objectAtIndex:0];

currentLanguage enthält dann das Sprachkürzel nach ISO 639-1, z.B. de für Deutsch oder en für Englisch.

]]>
Fri, 17 Apr 2009 12:23:00 +0200 http://thomas.dohmke.de/items/view/319/iphone-code-schnipsel-eingestellte-sprache
Drei Links zum Sonntag (XIII) http://thomas.dohmke.de/items/view/310/drei-links-zum-sonntag-xiii

Die 13. Runde unserer Links zum Sonntag beschäftigt sich mit Programmierung und Marketing von Spielen auf dem iPhone:

iPhone Game Programming Tutorial Part 1, Part 2 und Part 3 Brandon Trebitowski hat in seinem Blog icodeblog.com ein dreiteiliges Tutorial veröffentlicht, in dem er die Entwicklung des (Beispiel-)Spiels iTennis beschreibt. iPhone Game Programming Tutorial 1, Tutorial 2 und Tutorial 3 Mike Daley stellt bei 71Squared ebenfalls ein Tutorial zur Verfügung, hier jedoch in Form von Screencasts. Der Fokus liegt auf OpenGL ES und der vierte Teil ist bereits angekündigt. Creating an iPhone Game Video Owen Goss erläutert seine Vorgehensweise bei der Erstellung eines Videos von seinem iPhone-Spiel Dapple und zeigt am Ende das fertige Video.

]]>
Sun, 12 Apr 2009 14:27:00 +0200 http://thomas.dohmke.de/items/view/310/drei-links-zum-sonntag-xiii
Drei Links zum Sonntag (XII) http://thomas.dohmke.de/items/view/297/drei-links-zum-sonntag-xii

Der Frühling ist endgültig da und es gibt wieder drei Links zum Sonntag:

Designing Convertbot Mark Jardine schreibt über die Entstehung und das Design der iPhone App ConvertBot, dessen Nützlichkeit allerdings in der derzeit vorliegenden Version 1.0 über einen Bug bei der Verwendung des Kommas als Dezimaltrennzeichen beeinträchtigt wird. Trotzdem eine schicke App. 360iDev Slides Bei SlideShare wurden unlängst alle Foliensätze der Konferenz 360iDev veröffentlicht. Jede Menge spannender Informationen, leider ohne Ton oder Video. OpenID Rails Kit Wer gerade ein neues Rails-Projekt aufsetzen will (so wie wir) und eine Authentifizierung der Benutzer mit Benutzername und Passwort oder alternativ mit Open ID einbinden will, sollte sich das OpenID Rails Kit anschauen. Die App kommt komplett lauffähig inkl. Tests mit RSpec. Einfach, schnell, eben Ruby on Rails.

]]>
Sun, 05 Apr 2009 16:52:00 +0200 http://thomas.dohmke.de/items/view/297/drei-links-zum-sonntag-xii
Neu im App Store: Ruby Helper http://thomas.dohmke.de/items/view/285/neu-im-app-store-ruby-helper

Sie ist da, unsere erste iPhone App: Ruby Helper.

Über Ruby Helper

Nimm die API-Dokumentation von Ruby und Ruby on Rails überall mit hin. Auf deinem iPhone oder iPod Touch. Kostenlos!

Ruby Helper listet alle Klassen, Module und Methoden auf und ermöglicht die Suche nach Klassen-, Modul- und Methodennamen. Wählt man eine Klasse oder ein Modul aus, wird die Beschreibung sowie die zugehörigen Methoden dargestellt. Zu jeder Methode werden Parameter, Beschreibung und Quellcode angezeigt. Zusätzlich gibt es eine Liste mit Texten, die die README- und LICENSE-Dateien von Ruby und Ruby on Rails beinhalten.

Alle Dokumente sind mit der App auf dem iPhone oder iPod Touch gespeichert, so dass beim Lesen keine Verbindung zum Internet notwendig ist. Version 1.0 enthält die Dokumentation für Rails 2.3.2 (6 Texte, 569 Klassen, 496 Module, 3530 Methoden) und Ruby 1.8.7 (6 Texte, 1284 Klassen, 251 Module, 6804 Methoden). Mit einer der nächsten Versionen wollen wir außerdem umsetzen, dass das Herunterladen und Hinzufügen von eigenen Dokumenten möglich ist.

Screenshots

Fehler, Neue Features, Hilfe

Im englischen Teil unserer Seite haben wir ein Ticketsystem für Ruby Helper aufgesetzt. Falls du also ein Problem mit der App hast, eine Idee für ein neues Feature oder einfach Hilfe brauchst, fülle das Formular für ein neues Ticket aus (gerne auch in deutscher Sprache) und wir werden uns so schnell wie möglich darum kümmern.

]]>
Wed, 01 Apr 2009 11:08:00 +0200 http://thomas.dohmke.de/items/view/285/neu-im-app-store-ruby-helper
Drei Links zum Sonntag (XI) http://thomas.dohmke.de/items/view/279/drei-links-zum-sonntag-xi

Nicht viel los in letzter Zeit hier in unserem Blog, geschuldet vor allem durch zu viele Projekte. Auf die drei Links zum Sonntag wollen wir aber nicht verzichten:

Getting Ready For Core Data In 3.0 Dan Grigsby listet auf Mobile Orchard die drei wichtigsten Ressourcen für den Einstieg in Core Data auf. Hintergrund ist, dass Core Data mit dem 3.0er SDK auch auf dem iPhone Einzug hält. Core Data: Subclassing NSManagedObject Marcus Zarra beschreibt im Blog des Mac Developer Networks, wie man Klassen von NSManagedObject ableiten kann.
The Three20 Project Joe Hewitt stellt das Three20 Project vor, welches eine Reihe von Hilfsklassen für die Einbindung in eigene iPhone Apps beinhaltet, u.A. einen Viewer für Fotos und ein Eingabedialog zum Schreiben von E-Mails. Der komplette Quellcode ist auf GitHub verfügbar und steht unter der Apache License 2.0.

]]>
Sun, 29 Mar 2009 21:58:00 +0200 http://thomas.dohmke.de/items/view/279/drei-links-zum-sonntag-xi
Drei Links zum Sonntag (X) http://thomas.dohmke.de/items/view/272/drei-links-zum-sonntag-x

Die Woche war spannend, vor allem im Hinblick auf iPhone OS 3.0, aber da die meisten Informationen dazu noch unter NDA stehen, gibt's drei herkömmliche Links:

How-to: building services into iPhone applications Erica Sadun beschreibt in einem Artikel auf Ars Technica, wie sich mit dem iPhone über URL-Schemas eigene Dienste definieren lassen und illustriert dies mit einer Beispielanwendung, die Copy & Paste implementiert. iPhone Unit Testing Beim ursprünglichen Entwickler des Testing Frameworks OCUnit findet sich ein Beitrag, wie man Unit Tests für das iPhone definiert und mit dem Simulator laufen lässt. Should An iPhone App Developer Charge Or Run Ads? Bo Wang stellt bei TechCrunch den Verlauf der Download- bzw. Verkaufszahlen seines iPhone-Spiels vor und vergleicht den Gewinn aus Verkäufen im App Store mit Erlösen aus Werbung. Ob sich diese Zahlen auf andere Apps übertragen lassen, würde ich bezweifeln, meine Schlussfolgerung ist eher, dass sich mit Klonen von Breakout kein Geld verdienen lässt.

]]>
Sun, 22 Mar 2009 22:07:00 +0100 http://thomas.dohmke.de/items/view/272/drei-links-zum-sonntag-x
iPhone Code Schnipsel: Erweitertes NSLog http://thomas.dohmke.de/items/view/249/iphone-code-schnipsel-erweitertes-nslog

Gegeben

Diverse Aufrufe von NSLog innerhalb eines iPhone-Projektes, z.B.

  • (void)applicationDidFinishLaunching:(UIApplication *)application { NSLog(@"App did finish launching.");

    // ...

    Gesucht

    In der Debug-Konfiguration soll zusätzlich Dateiname und Zeilennummer ausgegeben werden, in der Release-Konfiguration soll hingegen die Ausgabe deaktiviert werden.

    Lösung

    Inspiriert durch John Muchows Blogpost Filename and Line Number with NSLog: Part II und wie folgt abgewandelt:

LogHelper.h:

if DEBUG

define CMLog(format, ...) [LogHelper logWithPath:FILE line:LINE string:(format), ## VA_ARGS]

else

define CMLog(format, ...)

endif

@interface LogHelper : NSObject { }

  • (void)logWithPath:(char *)path line:(NSUInteger)line string:(NSString *)format, ...;

LogHelper.m:

import "LogHelper.h"

@implementation LogHelper

  • (void)logWithPath:(char *)path line:(NSUInteger)line string:(NSString *)format, ... { NSString *pathString = [[NSString alloc] initWithBytes:path length:strlen(path) encoding:NSUTF8StringEncoding];

    va_list argList; va_start(argList, format); NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:argList]; va_end(argList);

    NSLog([NSString stringWithFormat:@"%@ (%d): %@", [pathString lastPathComponent], line, formattedString]); [formattedString release]; }

@end

Unter Target > AppName > Get Info ist dann im Reiter Build für die Konfiguration Debug die Einstellung Other C Flags mit -DDEBUG zu ergänzen und im Code NSLog durch CMLog zu ersetzen.

]]>
Sun, 15 Mar 2009 16:11:00 +0100 http://thomas.dohmke.de/items/view/249/iphone-code-schnipsel-erweitertes-nslog
Drei Links zum Sonntag (IX) http://thomas.dohmke.de/items/view/246/drei-links-zum-sonntag-ix

Der Frühling kündigt sich so langsam an und wir haben wieder drei Links:

Not Your Average iPhone Screencast Loren Brichter, bekannt durch den Twitter-Client Tweetie, stellt ein Tool vor, mit dem sich in Screencasts für iPhone Apps (unter anderem) die Position und Bewegung des Fingers anzeigen lässt. Das ganze heißt SimFinger und ist kostenlos verfügbar. Using UITableViewCell with InterfaceBuilder Markus Kirchner, seines Zeichens Initiator des Berliner CocoaHeads-Gruppe, beschreibt in seinem Blog das effiziente Laden und Wiederverwenden von UITableViewCell's aus XIB-Dateien. Wer es dann noch schneller will, muss die Zellen selber zeichnen. Bonjour Network Server for iPhone Bill Dudney, Autor der Bücher Core Animation for Mac OS X and the iPhone und iPhone SDK Development, erläutert die Einbindung eines Bonjour-Servers in eine iPhone App und bietet ein passendes Beispielprojekt zum Download an.

]]>
Sun, 15 Mar 2009 14:33:00 +0100 http://thomas.dohmke.de/items/view/246/drei-links-zum-sonntag-ix
iPhone Code Schnipsel: Hinweis nur einmal anzeigen http://thomas.dohmke.de/items/view/243/iphone-code-schnipsel-hinweis-nur-einmal-anzeigen

Gesucht¶

Beim ersten Start der App soll der Benutzer einmalig eine Meldung erhalten.

Lösung¶

Man nehme die Klassen UIAlertView und NSUserDefaults und rührt ein wenig um:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *showScrollingHint = [defaults stringForKey:@"LaunchMessage"]; if ((!showScrollingHint) || ([showScrollingHint isEqualToString:@"YES"])) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"If you like this app, tell it to all your friends." delegate:self cancelButtonTitle:@"Alrighty" otherButtonTitles:nil, nil]; [alert show]; } [defaults setObject:@"NO" forKey:@"LaunchMessage"];

Bei Bedarf kann man zusätzlich ein Settings.bundle erstellen, so dass der Benutzer die Einstellung zurücksetzen kann und damit den Hinweis erneut angezeigt bekommt.

]]>
Thu, 12 Mar 2009 22:03:00 +0100 http://thomas.dohmke.de/items/view/243/iphone-code-schnipsel-hinweis-nur-einmal-anzeigen
iPhone Code Schnipsel: Link aus UIWebView in MobileSafari öffnen http://thomas.dohmke.de/items/view/236/iphone-code-schnipsel-link-aus-uiwebview-in-mobilesafari-offnen

Gegeben¶

In einem UIWebView wird ein String dargestellt (UIWebView bietet faktisch die einzige Möglichkeit auf dem iPhone, "Rich-Text" darzustellen):

NSString *path = [[NSBundle mainBundle] bundlePath]; NSURL *baseURL = [NSURL fileURLWithPath:path]; [webView loadHTMLString:HTMLString baseURL:baseURL];

Gesucht¶

Links innerhalb des Strings sollen sich bei Aufruf durch den Benutzer in MobileSafari öffnen.

Lösung¶

Delegate des UIWebView auf eine Subklasse von UIViewController setzen, dort die Methode webView:shouldStartLoadWithRequest:navigationType: definieren:

  • (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSRange range = [[[request URL] absoluteString] rangeOfString:@"file:///"]; if (range.location == 0) { return YES; }

    [[UIApplication sharedApplication] openURL:[request URL]]; return NO; }

    Die Abfrage auf "file:///" ist notwendig, da die Delegate-Methode auch beim Laden des eigentlichen Strings aufgerufen wird. In dem Fall ist der Rückgabewert YES, so dass das UIWebView die Darstellung startet. In allen anderen Fällen wird MobileSafari über openURL aufgerufen und NO zurückgegeben.

    Siehe auch¶

    iPhone Code Schnipsel: Link in MobileSafari öffnen

]]>
Tue, 10 Mar 2009 20:14:00 +0100 http://thomas.dohmke.de/items/view/236/iphone-code-schnipsel-link-aus-uiwebview-in-mobilesafari-offnen
iPhone Code Schnipsel http://thomas.dohmke.de/items/view/233/iphone-code-schnipsel

Unter der Rubrik iPhone Code Schnipsel veröffentlichen wir hier seit ein paar Tagen kurze Ausschnitte aus dem Code, die wir bei der täglichen Arbeit mit dem iPhone-SDK immer wieder mal brauchen. So können wir sie selbst schnell wiederfinden und möglicherweise hilft es auch dem ein oder anderen Leser weiter:

Subviews umdrehen Text überblenden Verfügbare Schriftarten ermitteln Link in MobileSafari öffnen

Fortsetzung folgt...

]]>
Mon, 09 Mar 2009 16:14:00 +0100 http://thomas.dohmke.de/items/view/233/iphone-code-schnipsel
iPhone Code Schnipsel: Link in MobileSafari öffnen http://thomas.dohmke.de/items/view/232/iphone-code-schnipsel-link-in-mobilesafari-offnen

Gegeben¶

Ein View mit einem Button:

  • (void)loadView { UIButton *button = //... [button addTarget:self action:@selector(openLink:) forControlEvents:UIControlEventTouchDown]; [view addSubview:button]; }

    Gesucht¶

    Beim Drücken des Buttons soll sich ein zuvor festgelegter Link (z.B. die Twitter-Seite des Entwicklers) in MobileSafari öffnen.

    Lösung¶

  • (IBAction)openLink:(id)sender { NSURL *url = [NSURL URLWithString:@"http://twitter.com/ashtom"]; [[UIApplication sharedApplication] openURL:url]; }

    Will man statt MobileSafari ins Mail-Programm springen, hilft ein mailto:-Link:

  • (IBAction)openLink:(id)sender { NSURL *url = [NSURL URLWithString:@"mailto:thomas@dohmke.de"]; [[UIApplication sharedApplication] openURL:url]; }

    Betreff und Inhalt der E-Mail können mit den üblichen mailto:-Optionen mit vordefinierten Werten ausgestattet werden.

]]>
Mon, 09 Mar 2009 15:55:00 +0100 http://thomas.dohmke.de/items/view/232/iphone-code-schnipsel-link-in-mobilesafari-offnen
PLInstrument in iPhone-Projekte einbinden http://thomas.dohmke.de/items/view/231/plinstrument-in-iphone-projekte-einbinden

Als Ergänzung zu den heutigen Linktips erklärt dieser Artikel kurz die Einbindung von PLInstrument in ein bestehendes iPhone-Projekt:

PLInstrument aus dem Subversion-Repository auschecken: svn checkout http://plinstrument.googlecode.com/svn/trunk/ plinstrument Datei PLInstrument.xcodeproj mit Xcode öffnen. Unter Overview das Target PLInstrument-iPhoneOS auswählen, außerdem die Konfiguration auf Release setzen. Mit Cmd-B kompilieren. Unter Overview das Target PLInstrument-iPhoneSimulator auswählen. Mit Cmd-B kompilieren. Im Terminal in das Verzeichnis von PLInstrument wechseln und dort folgenden Befehl ausführen, um eine gemeinsame Bibliothek für iPhone und iPhone Simulator zu erstellen:lipo build/Release-iphonesimulator/libPLInstrument-iphonesimulator.a build/Release-iphoneos/libPLInstrument-iphoneos.a -create -output libPLInstrument-iphoneos.a Die erstellte Datei libPLInstrument-iphoneos.a in das eigene iPhone-Projekt einbinden, außerdem alle .h-Dateien aus dem Ordner plinstrument/Source einbinden. Mit Cmd-B kompilieren, es sollte dabei keine Fehlermeldung auftreten.

Anschließend kann PLInstrument innerhalb des eigenen Codes benutzt werden, z.B. um die Zeit für einen Datenbank-Request zu ermitteln:

import "PLInstrument.h"

// ...

PLIAbsoluteTime start = PLICurrentTime(); NSUInteger iterations = 0;

NSObject<PLResultSet> *results; results = [database executeQuery:@"SELECT * FROM test;"]; while ([results next]) { iterations++; // Do something with the results } [results close];

PLIAbsoluteTime finish = PLICurrentTime(); PLInstrumentResult *result = [PLInstrumentResult resultWithStartTime:start endTime:finish iterations:iterations]; NSLog(@"Select took %dns per iteration.", [result intervalPerIteration]); Bei Ausführung der App wird die mittlere Zeit pro Iteration in Nanosekunden auf der Konsole ausgegeben:

2009-03-08 18:55:06.734 Playground[2736:a203] Select took 2089470ns per iteration.

Es ist zu beachten, dass die API und Dokumentation von PLInstrument laut des Entwicklers derzeit nicht vollständig ist und entsprechend Änderungen unterliegen kann.

]]>
Sun, 08 Mar 2009 19:52:00 +0100 http://thomas.dohmke.de/items/view/231/plinstrument-in-iphone-projekte-einbinden
Drei Links zum Sonntag (VIII) http://thomas.dohmke.de/items/view/230/drei-links-zum-sonntag-viii

Es ist schon wieder Sonntag und so gibt's erneut drei Links:

iPhone Resources Ari Braginsky veröffentlichte auf seiner Homepage eine lange Liste aller Seiten, Blogs, Twitter-Benutzern und sonstigen Ressourcen zum Thema iPhone-Entwicklung, die er regelmäßig verfolgt. Wer noch ein paar neue Feeds braucht, wird dort vermutlich fündig.
iPhone dev: robust UISwitch label swaps Erica Sadun erklärt auf Ars Technica, wie man ein UISwitch-Element auf dem iPhone statt mit dem üblichen ON/OFF (bzw. in der deutschen Lokalisierung I/O) mit beliebigen Beschriftungen erstellen kann. PLInstrument Landon Fuller stellt nach PLActorKit, PLDatabase und PLCrashReporter die nächste Bibliothek, genannt PLInstrument, zur Verfügung. Die Aufgabe der Bibliothek ist die Messung der Laufzeiten von Objective-C-Code, wobei der Fokus speziell auf der Analyse von Schleifen bzw. Iterationen liegt. Die API und Dokument ist derzeit noch nicht vollständig, daher muss die Bibliothek aus dem Subversion-Repository ausgecheckt und selbst kompiliert werden.

]]>
Sun, 08 Mar 2009 19:21:00 +0100 http://thomas.dohmke.de/items/view/230/drei-links-zum-sonntag-viii
iPhone Code Schnipsel: Verfügbare Schriftarten ermitteln http://thomas.dohmke.de/items/view/229/iphone-code-schnipsel-verfugbare-schriftarten-ermitteln

Gesucht¶

Alle auf dem iPhone verfügbaren Schriftarten.

Lösung¶

NSMutableArray *familyNames = [[NSMutableArray alloc] initWithArray:[UIFont familyNames]]; [familyNames sortUsingSelector:@selector(compare:)]; for (NSInteger index = 0; index < [familyNames count]; index++) { NSLog(@"Family name: %@", [familyNames objectAtIndex:index]); NSMutableArray *fontNames; fontNames = [[NSMutableArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [familyNames objectAtIndex:index]]]; for (NSInteger subIndex = 0; subIndex < [fontNames count]; subIndex++) { NSLog(@"- Font name: %@", [fontNames objectAtIndex:subIndex]); } [fontNames release];
} [familyNames release];

]]>
Sat, 07 Mar 2009 19:57:00 +0100 http://thomas.dohmke.de/items/view/229/iphone-code-schnipsel-verfugbare-schriftarten-ermitteln