------<a href="http://www.itheima.com" target="blank">Java火车、Android火车、iOS火车、.Net火车</a>、我们期待与您的沟通!
-------
Foundation框架中包括了非常多开发中经常使用的数据类型,比方。结构体,字符串。集合类等。是其它iOS框架的基础。
假设想要使用Foundation框架的数据类型,那么仅仅要包括它的
头文件就能够了。即#import<Foundation/Foundation.h>
Foundation中经常使用的结构体:
在foundation框架中,经常使用的结构体有四种:
NSRange
NSPoint\CGpoint
NSSize\CGSize
NSRect\CGRect
NSRange: 表示范围(location length)
NSRange的定义:位置和长度
typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
NSRange的基本使用:
// @"i love oc" //love的范围 NSRange r1 = {2,4}; //可读性比較差,开发中一般不用 NSRange r2 = {.location = 2, .length = 4}; //不用 //实际开发中最经常使用的是使用Foundation自带的函数。例如以下: NSRange r3 = NSMakeRange(2, 4); //要求掌握 //字符串创建最快的方式 NSString *str = @"i love oc"; //rangeOfString查找某个字符串的范围,查找love的范围 //假设找不到,length= 0,location = NSNotFound == -1 NSRange range = [str rangeOfString:@"love"]; //打印出来 NSLog(@"loc = %ld,length = %ld",range.location,range.length);
NSPoint和CGPoint是一样的。开发中经经常使用CGPoint
typedef CGPoint NSPoint;
struct CGPoint { CGFloat x; CGFloat y; //CGFloat类型。实际就是double }; typedef struct CGPoint CGPoint;NSPoint\CGPoint的使用:
//开发中CGPoint经常使用,由于他是跨平台的 //创建结构体变量 NSPoint p1 = CGPointMake(10, 10); //最经常使用 CGPoint p2 = NSMakePoint(10, 10);
使用方法基本和NSPoint一样
typedef CGSize NSSize;
struct CGSize { CGFloat width; CGFloat height; }; typedef struct CGSize CGSize;
NSSize\CGSize的基本使用:
//创建结构体变量 NSSize s1 = CGSizeMake(100, 50); NSSize s2 = NSMakeSize(100, 50); CGSize s3 = NSMakeSize(200, 100);
typedef CGRect NSRect;
struct CGRect { CGPoint origin; CGSize size; }; typedef struct CGRect CGRect;
//创建结构体变量 //方式一 CGRect r1 = CGRectMake(0, 0, 50, 100); //方式二 CGRect r2 = {{0,0},{50,100}}; //方式三 CGRect r3 = {p1 ,s2}; CGRect r4 = {CGPointZero,CGSizeMake(50, 100)}; //表示原点,开发中常常常使用 //CGPointZero ==CGPointMake(0, 0); // //常规的使用方式: // CGRect myRect(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; // } //开发中常常是先把结构体转成字符串,然后再打印
//结构体转换为字符串的方式。要求掌握 //NSString *str = NSStringFromPoint(p1); //把坐标转换成字符串 //NSString *str = NSStringFromSize(s3); //吧尺寸转换成字符串 NSString *str = NSStringFromRect(r1); //把位置和尺寸转换成字符串的形式打印
NSLog(@"%@",str);
//尝试打印,此方式比較麻烦。开发中不使用 // NSLog(@"x = %f,y = %f ,width = %f,height = %f ",r1.origin.x,r1.origin.y,r1.size.width,r1.size.height);
Foundation 框架中一些经经常使用到的结构体函数:
使用这些函数的前提是加入CoreGraphics框架
//比較两个点的位置是否同样 (x 、y) BOOL b = <span style="color:#ff0000;"> CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10)); //比較两块区域是否同样] CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>) //比較两个尺寸是否同样 CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>) //推断这个点是否在区域范围内 // x(50,100) y(40,90) BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 1010, 50), CGPointMake(60, 40)); NSLog(@"%d",b2);
NSString:
NSString :不可变字符串
NSMutableString :可变字符串
字符串的创建方式:
//字符串的创建 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 = [[NSString alloc]initWithContentsOfFile:@"/Users/mymac/Desktop/test/内存管理/总结.m" encoding:NSUTF8StringEncoding error:nil]; NSLog(@"\n%@",s5); //URL :资源路径 //协议头://路径 //(本地文件)file:// // ftp:// //http://weibo.com/a.png //NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/mymac/Desktop/test/内存管理/总结.m"]; NSURL *url = [NSURL fileURLWithPath:@"//Users/mymac/Desktop/test/内存管理/总结.m"]; NSString *s6 = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"s6 = \n%@", s6); /* 创建字符串的时候通常也有一些类方法 一般都会有一个类方法跟对象方法配对,开发中常常使用类方法。非常少使用对象方法,以节省时间 [NSURL URLWithString:(NSString *)]; [NSString stringWithFormat:@""]; [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>]; */
//字符串写到文件里的方法 [@"jack\njack" writeToFile:@"/Users/mymac/Desktop/test/内存管理/总结.m "atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSString *str = @"rweudjkqsdjiw"; NSURL *url = [NSURL fileURLWithPath:@"/Users/mymac/Desktop/test/内存管理/总结.m"]; [str writeToFile:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
//可变字符串的创建 NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 10"]; //拼接内容到S1的后面 [s1 appendFormat:@" 11 12"]; //获取is的范围 NSRange range = [s1 rangeOfString:@"is"]; [s1 deleteCharactersInRange:range]; //删除 NSString *s2 = [NSString stringWithFormat:@"age is 10"]; NSLog(@"s1 = %@,s2 = %@",s1,s2);
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS火车、.Net火车</a>、我们期待与您的沟通! -------
版权声明:本文博客原创文章,博客,未经同意,不得转载。
黑马程序猿————OC在Foundation框架结构和字符串
原文:http://www.cnblogs.com/lcchuguo/p/4621294.html