若排版有错误,请查看PDF版:http://pan.baidu.com/s/1bnzW6jt
一、 结构体
NSRange(location length)
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect (CGPint CGSize)
1. NSRange(location length)
表示范围:位置(location)、长度(length)
// @"ilove oc"
// 表示"love"的范围
NSRange r1 = {2, 4}; // 不用
NSRange r2 = {.location = 2, .length =4};// 不用
NSRange r3 = NSMakeRange(2,4); // 掌握
// 查找某个字符串在str中的范围(rangeOfString:)
NSString *str = @"i love oc";
NSRange range = [str rangeOfString:@"java"];// 如果找不到,length=0,location=NSNotFound==-1
NSLog(@"loc = %ld,length=%ld", range.location, range.length);
2. NSPoint/CGPoint
表示点:坐标(x, y)
CGPoint p1 =NSMakePoint(10,10);
NSPoint p2 = CGPointMake(20, 20);// 最常用
3. NSSize/CGSize
表示区域大小:宽度(width)、高度(height)
NSSize s1 =CGSizeMake(100,50);
NSSize s2 =NSMakeSize(100,50);
CGSize s3 = NSMakeSize(200, 60);
4. NSRect/CGRect (CGPint CGSize)
表示区域:点(CGPoint)、区域大小(CGSize)
CGRect r1 = CGRectMake(0,0, 100, 50);
CGRect r2 = { {0, 0}, {100, 90}};
CGRect r3 = {p1, s2};
// 使用CGPointZero(原点)等的前提是添加CoreGraphics框架
// CGSizeZero
// CGRectZero
CGRect r4 = {CGPointZero,CGSizeMake(100, 90)};
将结构体转为字符串
//NSString *str = NSStringFromPoint(p1);
//NSString *str = NSStringFromSize(s3);
NSString *str = NSStringFromRect(r1);
NSLog(@"%@", str); // {{0, 0}, {100, 50}}
CGRectmyRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
5. CGPointEqualToPoint、CGRectContainsPoint等
使用这些CGPointEqualToPoint(比较两点是否相同)、CGRectContainsPoint(点是否在某区域内)等函数的前提是添加CoreGraphics框架
// 比较两个点是否相同(x、y)
BOOL b =CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));
//CGRectEqualToRect(<#CGRect rect1#>, <#CGRectrect2#>)
//CGSizeEqualToSize(<#CGSize size1#>, <#CGSizesize2#>)
BOOL b2 =CGRectContainsPoint(CGRectMake(50,40, 100, 50), CGPointMake(60, 45));
二、 NSString
1. 字符串的创建
NSString *s1 = @"jack";
//NSString *s2= [[NSString alloc] initWithString:@"jack"];
NSString*s3 = [[NSString alloc] initWithFormat:@"age is %d",10];
// C字符串--> OC字符串
NSString *s4 = [[NSString alloc]initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSStringalloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"encoding:NSUTF8StringEncoding error:nil];
// URL : 资源路径
// 协议头://路径
// file://
// ftp://
// NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];
一般都会有一个类方法跟对象方法配对
[NSURL URLWithString:<#(NSString *)#>];
[NSString stringWithFormat:@""];
[NSStringstringWithContentsOfFile:<#(NSString *)#>encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing*)#>];
2. 字符串的导出
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YESencoding:NSUTF8StringEncoding error:nil];
NSString *str = @"4234234";
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
[str writeToURL:url atomically:YESencoding:NSUTF8StringEncoding error:nil];
三、 NSArray、NSMutableArray
OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
(一) NSArray(不可变数组)
1. NSArray的创建
1) 这个array永远是空数组
NSArray*array = [NSArray array];
2) nil是数组元素结束的标记
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
NSArray*array3 = [NSArray arrayWithObjects:@"jack",@"rose", nil];
3) 快速创建一个NSArray对象,@[]只能创建不可变数组
NSArray*array3 = @[@"jack",@"rose"];
2. NSArray中元素的个数
NSLog(@"%ld", array3.count);
3. NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);// rosearray3[1];
4. 遍历数组
// id obj代表着数组中的每一个元素
int i = 0;
for (id objin array3)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array3indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
if (i==1)
{ //停止遍历
break;
}
}
[array3 enumerateObjectsUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx,BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx == 1)
{
// 停止遍历
*stop = YES;
}
}];
(二) NSMutableArray(可变数组)
1. NSMutableArray的创建
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose",@"jim", nil];
2. 添加元素
[array addObject:[[Personalloc] init]];
[array addObject:@"jack"];
3. 删除元素
[array removeAllObjects];
4. 删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
5. 错误写法
[array addObject:nil];
NSLog(@"%@", array);
NSLog(@"%ld", array.count);