Statt
cell.text = @“fooBar“;
Sollte man:
cell.textLabel.text = @“rightFooBar“;
nutzen.
Grund: die cell.text Methode ist deprecated und sollte nicht mehr genutzt werden.
Der hier bereits erwähnte Service getdropbox.com hat seinen Webauftritt überarbeitet und auf ein neues Level gehoben.
Hier die Neuerungen:
Some new features:
– Schöner ( 🙂 )
– Multi-select im file browser
– Echte größen Operationen (mit FortschrittsAnzeige für große Dateien)
– Zip Dateien aus Ordnern / Auswahl von Dateien direkt herunterladen
– Suche im File Browser
– Verbesserungen in der Navigation
– GMail style keyboard Abkürzungen
– Mobile version der site (für nicht iPhone Nutzer)
– UI / Benutzungs Verbesserungen
– Neuer „Getting Started tab“ (wer ihn aufruft bekommt Extra Space geschenkt!)
Alles in allem ein solides Update eines sehr praktischen Dienstes.
Hier noch ein Ref Link für die Benutzer, die getdropbox bis dato noch nicht kannten: Klick mich
Hier eine Beschreibung, wie man Truecrypt und dropbox koppeln kann, um mobile Verschlüsselung zu erreichen.
Apple hat am heutigen Tag iTunes 9 veröffentlicht. Eine der Neuerungen ist dabei Genius Mixe. Wer Genius bereits in der vorherigen iTunes Version verwedente, wird sich fragen, wo Genius Mixe auffindbar ist.
Problemlösung: Genius aktualisieren über Store – Genius aktualisieren
Weitere Neuerungen:
Da bei einem NSMutableArray keine size Operation funktioniert, aber die Anzahl der Elemente wichtig ist nutzt man die Operation count.
NSString *firstObject = @“firstObject“;
NSString *secondObject = @“secondObject“;NSMutableArray *testArray = [[NSMutableArray alloc]init];
[testArray addObject:firstObject];
[testArray addObject:secondObject];NSLog(@“Size des Arrays: %i“, [testArray count]);
Resultat eine Log Ausgabe:
2009-09-09 12:27:08.838 XML[56422:20b] Size des Arrays: 2
Wer mit Java gearbeitet hat, ist gewohnt, exceptions zu catchen, verarbeiten oder zu throwen. In XCode muss man sich da etwas umstellen. Exceptions werden bei Laufzeit geworfen und eine Möglichkeit, auf diese zu reagieren ist auf den ersten Blick nicht vorgesehen.
Wenn nun eine Exception bei einem Projekt mit mehreren tausend Zeilen Code auftritt bietet der Debugger nur wenig Hilfe die entsprechende Stelle zu finden. Die Konsolenausgabe hilft nur teilweise. Viel schöner wäre doch ein automatischer Breakpoint bei der fehlerhaften Stelle. Und genau dies ist Möglich!
Man öffne den Debugger, Klicke auf Breakpoints und füge dort einen eigenen Breakpoint mit dem Namen objc_exception_throw und der Location libobjc.A.dylib. Fertig!
Ab jetzt wird automatisch ein Breakpoint dort gesetzt, wo eine Exception geworfen wird.
Aus anderen Programmiersprachen kennt man den trim(); Befehl, der folgendes tut:
trim — Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings
In ObjC ist eine solche trim Funktionalität z.B: sinnvoll wenn man eine XML parsen möchte und in der XML Leerzeichen vor dem eigentlichen String sind.
Folgende Anweisung entfernt die störenden Leerzeichen (whitspaces):
NSString *trimmedString = [StringWithWhitespaces stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Resultat ist ein NSString, der ohne Probleme genutzt werden kann.
Fit for Fun stellt heute in Zusammenarbeit mit Faris al-Sultan und Stephan Vuckovic eine Reihe von sinnvollen Übungen zum Dehnen und Kräftigen des gesamten Bewegungsapparates vor. Zwar sind die Stretching-Übungen noch ausbaufähig, aber für ein schnelles Pre-Stretch sicher nicht verkehrt.
Die Übungen im Einzelnen:
Ausgelassen werden dabei z.B. Oberschenkel oder Bizeps.
Siehe:
Um in eine TabBarNavigation einer iPhone Anwendung ein neues TabBarNavi-Item hinzuzufügen, welches einen eigenen Controller (UIViewController) und eine eigene View hat sind folgende Schritte notwendig:
A: Implementierung MyViewController:
//
// MyTabItemViewController.m
// TabBar
//
// Created by Alexander Jäger on 04.09.09.
// Copyright 2009 mediajaeger.de. All rights reserved.
//
#import "MyTabItemViewController.h"
@implementation MyTabItemViewController
// Override initWithNibName:bundle: to load the view using a nib file then perform additional customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Custom initialization
self.title = @"MyTabItemView";
self.tabBarItem.image = [UIImage imageNamed:@"all.png"];
}
return self;
}
- (void)dealloc {
[super dealloc];
}
@end
A: Implementierung AppDelegate:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[...]
tabBarController = [[UITabBarController alloc] init];
MyTabItemViewController *aMyTabItemViewController = [[MyTabItemViewController alloc] initWithNibName:@"MyTabItem" bundle:nil];
// other ViewController
[...]
// add the Controller to the RootController
tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,aMyTabItemViewController, nil];
[...]
// release
[aMyTabItemViewController release];
[...]
Wer ein iPhone Programm mit einer tabBar Navigation über einen tabBarController schreibt, kann unter Umständen das Problem erhalten, dass das Programm ohne ersichtlichen Grund mit EXC_BAD_ACCESS terminiert.
Eine mögliche Ursache ist der Array aus ViewControllern, der mit Inhalten gefüllt wird:
tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,thirdViewController];
Dieser Array zeigt den Fehler, denn um eine korrekte Darstellung zu erhalten, muss der Array mit nil terminiert werden:
tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,thirdViewController, nil];
Wer mit XCode arbeitet kennt die Code Completion, beim tippen wird das wahrscheinlichste in grau angezeigt und kann mit ENTER bestätigt werden. Das erspart eine Menge Arbeit.
Was jedoch tun, wenn man nicht genau weiß, welche Methoden oder Properties ein Objekt / Instanz hat?
XCode bietet dafür eine Lösung, die von vielen anderen Frameworks bekannt ist: eine Darstellung als Liste!
Diese Liste erhällt man durch ESC beim tippen und sieht dann wie oben gezeigt aus. Nun noch das gewünschte Element der Liste auswählen, fertig.