码迷,mamicode.com
首页 > 其他好文 > 详细

[黑马程序员]Objective-C Foundation框架基础

时间:2015-04-21 17:46:23      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

Foundation

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);

3、NSSize

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);

4、NSRect

表示一个矩形范围,拥有两个成员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和NSMutableString

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"];

NSArray和NSMutableArray(数组)

注意:数组不能存放基础数据类型,只能存放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]);
}

NSMutableArray

继承于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和NSMutableSet

NSSet和NSArray十分相似,只是NSSet是无序的,而NSArray是有序的。

NSMutableSet也是可变的。 

[黑马程序员]Objective-C Foundation框架基础

标签:

原文地址:http://www.cnblogs.com/imabel/p/4444388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!