1. Fundation kit中一些有用的数据类型:常用结构体:NSRange, NSPoint, NSSize, NSRect; 常用类: NSString, NSMutableString, NSArray, NSMutableArray, NSDictionary, NSMutableDictionary, NSNumber, NSValue, NSEnumerator
2. NSString代表不可变的字串,对应Java中的String。NSString的一个类方法stringWithFormat可以按照指定format创建一个NSString;判断两个字串是否相等可以用isEqualToString,返回值是BOOL(YES或NO);比较两个字串可以用函数compare,返回值是NSComparisonResult(Enum类型,包括NSOrderedAscending, NSOrderedSame, NSOrderedDescending),可以在compare时加options参数指定比较方式(NSCaseInsensitiveSearch, NSLiteralSearch, NSNumericSearch).
3. NSArray创建的是不可变对象的数组,不能在创建后添加或者删除任何元素,但是数组中包含的对象是可变的,只是数组对象本身不可变。NSArray只能存储Objective-C的对象,不能存储C语言中的基本数据类型(int, float, enum, struct等以及nil),如果需要存储这些类型的数据,需要用NSValue或者NSNumber做包装之后再放入。
4. NSMutableString, NSMutableArray和NSMutableDictionary分别对应可变字串,数组和字典。
5. Enumerator对应Java中的iterator,用来遍历访问NSString或者NSDictionary等集合中的数据。
6. Objective-C中的装箱(boxing)和取消装箱(unBoxing)。Cocoa提供了NSNumber类来包装基本数据类型,NSNumber类方法(NSNumber *)numberWithChar: (char) value; (NSNumber *)numberWithInt: (int) value; (NSNumber *)numberWithFloat: (float) value; (NSNumber *)numberWithBool: (BOOL) value;用来完成装箱;(char)charValue; (int)intValue; (float)floatValue; (BOOL)boolValue; (NSString *)stringValue;
7. NSValue可以用来包装任意值,并且可以读取出原值,因此可以用NSValue将结构放入NSArray和NSDictionary中。 创建新的NSValue方法是:(NSValue*) valueWithBytes: (const void *) value objCType:(const char *) type; 提取数值的方式是:(void) getValue: (void *). Cocoa提供了将常用struct型数据转换为NSValue的便捷方法,比如+(NSValue *) valueWithPoint: (NSPoint) point; +(NSValue *) valueWithSize: (NSSize) size; +(NSValue *) valueWithRect: (NSRect) rect; 用来将常用struct转换成NSValue,-(NSPoint) pointValue; -(NSSize) sizeValue; -(NSRect) rectValue;用来逆向转换。