Benutzer-Werkzeuge

Webseiten-Werkzeuge


apple:foundation:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
apple:foundation:start [2015-03-04 05:20] – "NSDictionary" eingefügt a.kamolaapple:foundation:start [2015-03-16 12:56] (aktuell) – [Zahlen] "Literal" eingefügt a.kamola
Zeile 3: Zeile 3:
 //Foundation// ist das Basis-Framework von Apple für [[macosx:development|MacOS X]] und [[ios:development|iOS]]. //Foundation// ist das Basis-Framework von Apple für [[macosx:development|MacOS X]] und [[ios:development|iOS]].
  
-Die Klassen von Foundation beginnen i.d.R. mit dem Kürzel "NS" als Abkürzung für das, von Steve Jobs entwickelte, Betriebssystem [[wp>NeXTSTEP|NeXTStEP]], auf dessen Komponenten MacOS X basiert.+Die Klassen von Foundation beginnen i.d.R. mit dem Kürzel "NS" als Abkürzung für das, von Steve Jobs entwickelte, Betriebssystem [[wp>NeXTSTEP|NeXTSTEP]], auf dessen Komponenten MacOS X basiert. 
 + 
 +===== Hello World ===== 
 + 
 +Ein einfaches Programm in [[objc:start|Objective-C]] mit dem Foundation-Framework und ''NSAutorelasePool'': 
 + 
 +<code objc helloworld.m> 
 +#import <Foundation/Foundation.h> 
 + 
 +int main(int argc, char const *argv[]) 
 +
 + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
 + 
 + NSLog("Hello World!"); 
 + 
 + [pool drain]; 
 + 
 + return 0; 
 +
 +</code> 
 + 
 +===== Logging mit NSLog ===== 
 + 
 +Logging einer Variable ''foo'' vom Typ ''NSString'': 
 + 
 +<code objc> 
 +NSLog(@"foo: %@", foo); 
 +</code> 
 + 
 +===== Konstanten ===== 
 + 
 +Konstanten sollten mit dem Foundation-Framework als "statische Eigenschaften" definiert werden, statt über das noch aus [[c:start|C]] übliche ''#define'' (siehe dazu [[objc:start#konstanten|Objective-C: Konstanten]]). 
 + 
 +Für eine statische Eigenschaft wird in der Header-Datei einer Klasse über dem ''@interface''-Block diese mit den Schlüsselwörtern ''extern'' und ''const'' definiert. Bei der Benennung der Konstanten ist es auch oft üblich diese mit einem kleinen "k" zu beginnen. 
 + 
 +<code objc> 
 +extern NSString * const kFooBar; 
 +</code> 
 + 
 +In der Implementierungs-Datei wird dann der statischen Eigenschaft ein Wert zugewiesen. Dabei kann dann auf das Schlüsselwort ''extern'' verzichtet werden, das Schlüsselwort ''const'' muss aber beibehalten werden: 
 + 
 +<code objc> 
 +NSString * const kFooBar = @"SomeConstantValue"; 
 +</code> 
 + 
 +Quelle: [[http://stackoverflow.com/a/17228508|Stack Overflow: What is the best way to create constants in Objective-C?]]
  
 ===== Zahlen ===== ===== Zahlen =====
 +
 +==== Literal ====
 +
 +Mit dem Prefix ''@'' kann ein ''NSNumber''-Objekt direkt mit Zahl oder sogar mit einem String initialisiert werden:
 +
 +<code objc>
 +NSNumber *number = @42;
 +</code>
 +
 +Quelle: [[http://clang.llvm.org/docs/ObjectiveCLiterals.html|Clang 3.7: Objective-C Literals]]
  
 ==== String zu Zahl ==== ==== String zu Zahl ====
Zeile 22: Zeile 77:
  
 ===== Strings ===== ===== Strings =====
 +
 +==== Formatieren ====
 +
 +[[https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1|String Format Specifiers]]
  
 ==== Teile in einem String ersetzten ==== ==== Teile in einem String ersetzten ====
Zeile 35: Zeile 94:
 Quelle: [[http://stackoverflow.com/a/3613887|Stack Overflow: Replace a substring with another substring]] Quelle: [[http://stackoverflow.com/a/3613887|Stack Overflow: Replace a substring with another substring]]
  
-===== Datum/Uhrzeit =====+===== Arrays =====
  
-==== Aktuelles Datum und Uhrzeit ====+Definition eines Arrays als "Literal", mit zwei String-Werten:
  
-Das aktuelle Datum die aktuelle Uhrzeit liefert die [[objc:start#klassen-methoden|Klassen-Methode]''date'' der Klasse ''NSDate'':+<code objc> 
 +NSArray *foobar = @[@"foo", @"bar"]
 +</code> 
 + 
 +==== Durch ein Array mit einem Block iterieren ====
  
 <code objc> <code objc>
-NSDate *now = [NSDate date]+NSArray *foo = [NSArray arrayWithObjects:@"foo", @"bar", @"foobar", nil]
 + 
 +[foo enumerateObjectsUsingBlock:^(id value, NSUInteger index, BOOL *stop) { 
 + NSLog(@"%lu: %@", index, value); 
 +}]; 
 +</code> 
 + 
 +==== NSSet in NSArray/NSMutableArray ==== 
 + 
 +<code objc> 
 +NSSet *foo = [[NSSet alloc] init] 
 + 
 +// ... 
 + 
 +NSMutableArray *foobar = [NSMutableArray arrayWithArray[foo allObjects]]; 
 + 
 +// Alternative: 
 + 
 +NSMutableArray *barfoo = [[foo allObjects] mutableCopy];
 </code> </code>
  
Zeile 58: Zeile 139:
 NSDictionary *fooDictionary = (NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:fooData]; NSDictionary *fooDictionary = (NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:fooData];
 </code> </code>
 +
 +===== Datum/Uhrzeit =====
 +
 +==== Aktuelles Datum und Uhrzeit ====
 +
 +Das aktuelle Datum die aktuelle Uhrzeit liefert die [[objc:start#klassen-methoden|Klassen-Methode]] ''date'' der Klasse ''NSDate'':
 +
 +<code objc>
 +NSDate *now = [NSDate date]
 +</code>
 +
 +==== Daten vergleichen ====
 +
 +Daten lassen sich am besten über die Methode ''compare:'' der Klasse ''NSDate'' vergleichen:
 +
 +<code objc>
 +if ( [date1 compare:date2] == NSOrderedSame ) {
 + // date1 and date2 are the same
 +}
 +
 +if ( [date1 compare:date2] == NSOrderedDescending ) {
 + // date1 is after/later than date2
 +}
 +
 +if ( [date1 compare:date2] == NSOrderedAscending ) {
 + // date1 is before/earlier than date2
 +}
 +</code>
 +
 +Details in der [[https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/index.html#//apple_ref/occ/instm/NSDate/compare:|Dokumentation von NSDate]].
 +
 +Quelle: [[http://stackoverflow.com/a/5965106|Stack Overflow: How to compare two NSDates: which is more recent?]]
 +
 +===== Timer =====
 +
 +[[https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/classes/NSTimer_Class/Reference/NSTimer.html|NSTimer Class Reference]]
  
 ===== NSPredicate ===== ===== NSPredicate =====
apple/foundation/start.1425442840.txt.gz · Zuletzt geändert: 2015-03-04 05:20 von a.kamola