2009-06-27 26 views
4

Ich habe gerade das iPhone SDK 3.0 installiert und festgestellt, dass die Texteigenschaft von UITableViewCell nicht mehr verwendet wird und stattdessen textLabel.text verwendet werden soll. Bedeutet das, dass ich die aktuelle Systemversion kennen und die entsprechende Methode aufrufen muss? so was.iPhone SDK 3.0 Vs. 2.2.1

UITableViewCell *cell = ...; 
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) { 
    cell.textLabel.text = @"..."; 
} else { 
    cell.text = @"..."; 
} 

Wenn ja, das wäre sehr ärgerlich.

Antwort

3

Nur für 3.0 bauen und mach dir keine Sorgen um 2.2 mehr. Im Gegensatz zu größeren OS-Upgrades haben die Benutzer sehr, sehr schnell auf die neue Version von iPhone OS aktualisiert. Sieh dir diesen Beitrag im TapBots-Blog an: iPhone 3.0 Adoption Rate.

Bis Ihre App genehmigt wird (2 Wochen ab jetzt + einige?) Wird fast niemand mehr 2.2 verwenden!

+0

hi dies kann verwendet werden, um universelle Anwendung zu entwickeln http://cocoabugs.blogspot.com/2010/09/utility-method-to-know-ios4-installed.html –

1

Sie können das 3.0 SDK verwenden und eine ältere Version auf Ihre Projekte ausrichten, z. B. 2.2 oder 2.2.1.

Setzen Sie dazu das Base SDK auf 3.0, ändern Sie jedoch die iPhone OS-Bereitstellungszieleinstellung. Beide Einstellungen sind zugänglich, wenn Sie Informationen zum Projekt erhalten.

0

Eigentlich glaube ich nicht, dass Sie dies tun müssen, denn wenn Sie Ihr Projekt erstellen, wählen Sie, auf welche Firmware es ausgerichtet ist, wie pgb erwähnt. Dann können Sie einfach #ifdef Direktiven verwenden. Hier gibt es mehr Informationen: iPhone check firmware version Eine viel gründlichere Antwort wird hier gepostet: How to target a specific iPhone version?

EDIT: Ich entfernte einen Text nachdem er erkannt hatte, dass Systemversion ist tatsächlich eine Zeichenfolge, Quelle: UIDevice Docs.

Wenn Sie es in verschiedenen Dateien in Ihrem Projekt verwenden, dann können Sie es vielleicht organisieren, indem es als eine Eigenschaft zu Ihrem AppDelegate hinzufügen und ihnen den Wert Abrufen von so etwas wie dies zu tun:

MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *version = theDelegate.version; 

Aber das könnte für etwas so Einfaches wie die Versionsnummer zu verworren sein.

4

Statt die OS-Version überprüfen, können Sie überprüfen, ob die Zelle die neue Eigenschaft hat:

if ([cell respondsToSelector:@selector(textLabel)]) { 
    // Do it the 3.0 way 
    cell.textLabel.text = @"..."; 
} else { 
    // Do it the 2.2 way, but avoid deprecation warning 
    [cell performSelector:@selector(setText:) withObject:@"..."]; 
} 
1

Es veraltet ist und sie legen nahe, die neue Art und Weise, aber man kann sicherlich noch die 2.2 Art und Weise verwenden, wenn Sie wollen und es wird sich nicht negativ auf Ihre App auswirken, die unter 3.0 ausgeführt wird. Wenn Sie sich Sorgen über Benutzer noch auf 2.2 machen, überprüfen Sie auf jeden Fall den Link ben zur Verfügung gestellt. Ich denke nicht, dass es eine große Sache ist, wenn Sie für 3.0 kompilieren.

0

Wenn Sie sich vorerst für 2.2 entscheiden, sollten Sie im Simulator mit 3.0 testen. Wir haben merkliche Verhaltensunterschiede zwischen 2,2 und 3,0 beobachtet, besonders bei Tabellen.

Verwandte Themen