标签:
Foundation类层次的根是NSObject类,它(和NSObject及NSCopying协议一起)定义了基本的对象属性和行为。Foundation框架的剩余部分由几组相互关联的类和一些独立的类组成。有一些代表基本数据类型的类,如字符串、字节数组、用于存储其它对象的集合类;一些代表系统信息的类,如日期类;还有一些代表系统实体的类,比如端口、线程、和进程。
在iOS和Mac开发中都会用到Foundation框架。是iOS开发的基础框架。
1、NSRange
用于表示一个范围,拥有两个成员location和length,定义如下:
typedef struct _NSRange { NSUInteger location; NSUinteger length; } NSRange;
使用:
// @"i‘m abel"; // 表示上图oc字符串中abel的位置 // 第一种:简洁但可读性不好 NSRange range1 = {4, 4}; // 第二种:可读性好但不够简洁 NSRange range2 = {.location = 4, .length = 4}; // 第三种:可读性好也够简洁 NSRange range3 = NSMakeRange(4, 4);
2、NSPoint
NSPoint表示一个坐标,拥有x和y两个成员,事实上是CGPoint的别名,定义如下:
// CGPoint定义 struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; // NSPoint定义 typedef CGPoint NSPoint;
使用:
// NS NSPoint nsp1 = NSMakePoint(101, 101); // CG CGPoint cgp1 = CGPointMake(101, 101); // 交叉使用 NSPoint nsp2 = CGPointMake(101, 101); CGPoint cgp2 = NSMakePoint(101, 101);
NSSize表示一个尺寸,拥有width和height两个成员,定义如下:
typedef struct _NSSize{ CGFloat width; CGFloat height; } NSSize;
使用:
// NS NSSize nss = NSMakeSize(101, 101); // CG CGSize cgs = CGSizeMake(101, 101); // 交叉使用 NSSize nss = CGSizeMake(101, 101); CGSize cgs = NSMakeSize(101, 101);
表示一个矩形范围,拥有两个成员origin和size,实际上是CGRect的别名,定义如下:
// CGRect定义 struct CGRect { CGPoint origin; CGSize size; }; typedef struct CGRect CGRect; // NSRect定义 typedef struct CGRect NSRect;
使用:
// NS NSRect nss = NSMakeRect(101, 101, 101, 101); // CG CGRect cgs = CGRectMake(101, 101, 101, 101); // 交叉使用 NSRect nss = CGRectMake(101, 101, 101, 101); CGRect cgs = NSMakeRect(101, 101, 101, 101);
NSString
表示一个不可变字符串,其一旦定义将无法改变。
创建:
// 快速创建 NSString *str1 = @"i‘m abel"; // 格式化创建 NSString *str2 = [[NSString alloc] initWithFormat: @"age is %d", 10]; // 通过C语言字符串创建 NSString *str3 = [[NSString alloc] initWithUTF8String: "abel"]; // 从文件中读取内容创建 NSString *str4 = [[NSString alloc] initWithContentsOfFile: @"/path/to/file" encoding: NSUTF8StringEncoding error: nil]; // 从URL中读取内容创建 NSURL *urlToFile = [[NSURL alloc] initWithString: @"file:///path/to/file"]; // File协议 NSURL *urlToHttp = [[NSURL alloc] initWithString: @"http://www.baidu.com"]; // Http协议 NSString *str5 = [[NSString alloc] initWidthContentsOfURL: urlToHttp encoding: NSUTF8StringEncoding error: nil];
另外,也可以使用类方法来快速创建,这里用格式化创建来举例:
NSString *str6 = [NSString stringWithFormat: @"age is %d", 10];
NSMutableString
NSMutableString继承于NSString。表示一个可变字符串,因此,除了不能使用快速创建之外(@""的创建方式返回值为一个NSString类型,因此不能用于NSMutableString),上面的创建方式都是可行的,还可以对字符串进行一些操作。
// 创建 NSMutableString *str = [NSMutableString stringWithFormat: @"i‘m"]; // 在末尾添加 [str appendString: @" abel"]; // 普通 [str appendFormat: @"%@", @" abel"]; // 格式化 // 指定位置插入 [str insertString: @"abel" atIndex: 4]; // 删除指定位置 NSRange range = NSMakeRange(0, 4); [str deleteCharactersInRange: range]; // 重新指定 [str setString: @"i‘m abel"];
注意:数组不能存放基础数据类型,只能存放OC对象。
NSArray
表示一个不可变数组,创建:
// 快速创建 NSArray *arr0 = @[@"abel"]; // 空数组 NSArray *arr1 = [NSArray array]; // 通过一个对象创建 NSArray *arr2 = [NSArray arrayWithObject:@"abel"]; // 通过多个对象创建|末尾的nil为结束标志,因此,下面这种方式事实上只存在两个元素 NSArray *arr3 = [NSArray arrayWithObjects:@"abel", @"xsun", nil];
使用:
NSArray *arr = @[@"abel", @"xsun"]; // 统计元素个数 int count = arr.count; // 获取指定位置的元素 id ele = [arr objectAtIndex:1]; // 遍历数组 for(int i = 0; i < count; i ++){ NSLog(@"%@", [arr objectAtIndex:i]); }
继承于NSArray。表示一个可变数组,除了快速创建方式不能使用外,其它创建方式都可以使用。
// 创建一个空数组 NSMutableArray *arr = [NSMutableArray array]; // 添加元素 [arr addObject:@"abel"]; // 删除元素 [arr removeLastObject]; // 删除最后一个元素 [arr removeAllObjects]; // 删除所有元素 [arr removeObject:@"abel"]; // 删除指定元素 [arr removeObjectAtIndex:0]; // 删除指定位置元素 [arr removeObject:@"abel" inRange: NSMakeRange(0, 1)]; // 删除指定范围内的指定元素
NSSet和NSArray十分相似,只是NSSet是无序的,而NSArray是有序的。
NSMutableSet也是可变的。
[黑马程序员]Objective-C Foundation框架基础
标签:
原文地址:http://www.cnblogs.com/imabel/p/4444388.html