Foundation框架
Foundation框架实现很多的数据储存和其他类似的基础类。Foundation框架包括Value,collection类,有数字,数列,集合,字典等。Notifications,对象可以发出其他对象可能像知道的它们正在做什么事情的通告,并且不需要这两个对象互相有指针,一个对象可以注册已知的另外一个对象将会发送的特定通告。
Undomanager框架提供了基本的撤销支持
NSObject
根类(基本类)
实现许多基本功能
内存管理
introspection
对象的对等性
NSString
它是基于unicode的字符串,所有幕后存储的数据都是unicode的,因此它可以处理世界上所有的语言。
利用已经存在的字符串而修改为新字符串的方法:
-(NSString*)stringByAppendingString:(NSString*)existString;//串联字符串
-(NSString*)stringByAppendingFormat(NSString*)existString;
-(NSString*)stringByDeletingPathComponent;//如果你有磁盘上的某文件的路径,你可以发 //送小给它,新的字符串会带上一个相同的路径与上次的值的串接。
常用的NSString方法
-(BOOL)isEqualToString:(NSString*)string;
-(BOOL)hasPrefix:(NSString*)string;//是否把string当作前缀
-(int)intValue;//从字符串中取回数字值,如果是字符串中带有多个值,它会取回第一个数值
-(double)doubleValue;//如果没有值,则会取回0
字符串常量
NSString* aString=@”hello world”;
它们永远不会解除分配,它们是常量字符串,因此实际上它们是在你的可执行文件的数据部分。
因此你没有理由需要把它们解除分配。它们就在磁盘上。
NSMutableString
是NSString的子类,用NSMutableString定义的字符串可以被修改
常用的NSMutableString方法
+(id)string;
-(void)appendString:(NSString*)string;
-(void)appendFormat:(NSString*)format....;
例子:
NSMutableString*newString=[NSMutableString string]
[newStringappendString:@”hi”];
[newStringappendFormat:@”,my favorite number is :%d”,[self favoriteNumber]];
Collections
Array数列是有序的对象,或说是有序的对象集合
Dictionary字典是键值对
Set集合是无序的唯一对象的集合
NSArray
常用的NSArray方法
+arrayWithObject:(id)firstObj,.....;//以nil结尾
-(unsigned)count;//数组中的元素个数
-(id)objectAtIndex:(unsigned)index;//数组中特定索引的对象
-(unsigned)indexOfObject:(id)object;//数组中特定对象的索引,如果不存在则返回NSNotFound常量。你不会取回nil值,你只能得到NSNotFound。
NSInteger不是一个对象,只是一个c语言的整数,NSNumber是一个对象。
当你调用[NSNullnull],这实际上是一个特殊类型的对象,它代表null,你可以把它放在你的数列中,但是你不能放nil到你的数列中。如果你调用带着容量的数列,然后添加对象,你仍然需要nil结尾。
NSMutableArray
是NSArray的子类,可变数列
常用的一些NSMutableArray方法
+(NSMutableArray*)array;
-(void)addObject:(id)object;
-(void)removeObject:(id)subject;
-(void)removeAllObjects;
-(void)insertObject:(id)objectatIndex:(unsigned)index;
例子:
NSMutableArray* array=[NSMutableArray array];
[arrayaddObject:@”red”];
[arrayaddObject:@”Green”];
[arrayremoveObjectAtIndex:1];
NSDictionary
常用的NSDictionary方法
+dictionaryWithObjectAndKeys:(id)firstObject,....;//以nil结尾,传递时,第一个值是对象,第二个对象是第一个对象的值,键值的排列下去
-(unsigned)count;
-(id)objectForKey:(id)key;//如果没有找到返回的是nil
NSMutableDictionary
是NSDictionary的子类
常用的NSMutableDictionary方法
+(NSMutableDictionary*)dictionary;
-(void)setObject:(id)objectforKey:(id)key;
-(void)removeObjectForKey:(id)key;
-(void)removeAllObjects;
例子:
NSMutableDictionary*colors=[NSMutableDictionarydictionary];
[colorssetObject:@”orange” forKey:@”HighlightColor”];
NSSet
无序的对象集合,对象唯一
常见的NSSet方法
+setWithObject:(id)firstObject,....;//以nil结尾
-(unsigned)count;
-(BOOL)containsObject:(id)object;
NSMutableSet
是NSSet的子类,可变集合
常用的NSMutableSet方法
+(NSMutableSet*)set;
-(void)addObject:(id)object;
-(void)removeObject:(id)object;
-(void)removeAllObjects;
-(void)insertsectSet:(NSSet*)otherSet;
-(void)minusSet:(NSSet*)otherSet;
Enumeration
列举集合中的元素,经常用于NSArray,NSDictionary,NSSet等。
例子:
NSArray* array=.....;
//以前的做法
Person*person;
intcount=[array count];
for(inti=0;i
{
person=[arrayAtIndex:i];
NSLog([persondescription]);
}
//新的做法
for(Person*person in array)
{
NSLog([persondescription]);
}
NSNumber
NSNumber是一个对象,用于封装c中的数值型,是NSValue的子类,没有的可变的数值与之对应。
常用的NSNumber方法
+(NSNumber*)numberWithInt:(int )value;
+(NSNumber*)numberWithDouble:(double)value;
-(int)intValue;
-(double)doubleValue;
其他的类
NSData/NSMutableData代表任意字节
NSDate/NSCalendarDate日期/日历日期
获得对象
利用factory方法
NSString's +stringWithFormat;
NSArray's +array;
NSDictionary's+dictionary
上面的几种方法会返回autoreleased对象,因此它们会进入你的资源池,不需要担心内存管理.