黑马程序员——Objective-C——Foundation框架1
来源:互联网 发布:淘宝文艺礼物店铺 编辑:程序博客网 时间:2024/05/16 04:39
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Foundation框架
一、Foundation框架是其他所有ios框架的基础。
二、Foundation框架包含了很多开发中常用的数据类型:结构体,枚举,类。
三、要想使用Foundation中的数据类型,包含它的主文件#import<Foundation/Foundation.h>
即可。
结构体
一、常用结构体:
NSRange
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect
二、NSRange定义NSRange的定义
typedef struct _NSRange{ NSUInteger location; NSUInteger length;} NSRange;
NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象长度。使用方式有3种。
@"i love oc" // love的范围 NSRange r1 = {2, 4}; // 不常用 NSRange r2 = {.location = 2, .length = 4};// 不常用 NSRange r3 = NSMakeRange(2, 4); // 常用 NSString *str = @"i love oc"; //查找某个字符串在str中的范围如果找不到,length=0,location=NSNotFound==-1
NSRange range = [str rangeOfString:@"java"]; NSLog(@"loc = %ld, length=%ld", range.location, range.length);
三、point、size、rect
Point就是坐标,例如手机屏幕上的某一点即用坐标表示。
Size是尺寸,长宽的尺寸。
Rect包括以上两者信息。
//point结构体代码struc CGPoint{CGFloat x;//CGFloat就是double类型CGFloat y;};typedef struct CGPoint CGpoint;//size结构体代码struct CGSize{CGFloat width;CGFloat height;};typedef struct CGSize CGSize;//rectangles结构体代码struct CGRect{CGPoint origin;CGSize size;};结构体的使用方法
int main(){ CGPoint p1 = NSMakePoint(10,10); NSPoint p2 = CGPointMake(20, 20);// 最常用 NSSize s1 = CGSizeMake(100, 50); NSSize s2 = NSMakeSize(100, 50); CGSize s3 = NSMakeSize(200, 60); CGRect r1 = CGRectMake(0, 0, 100, 50); CGRect r2 = { {0, 0}, {100, 90}}; CGRect r3 = {p1, s2};// 使用CGPointZero等的前提是添加CoreGraphics框架 CGRect r4 = {CGPointZero, CGSizeMake(100, 90)}; // CGSizeZero = CGRectZero表示原点 // CGPointZero == CGPointMake(0, 0) // 将结构体转为字符串 //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);}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
一、NSString与NSMutableString都是oc中处理字符串的对象,他们之间的不同点在于前者不可更改,后者可以更改。
#import <Foundation/Foundation.h>int main(){ NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"]; // 拼接内容到s1的后面 [s1 appendString:@" 11 12"]; // 获取is的范围 NSRange range = [s1 rangeOfString:@"is"]; [s1 deleteCharactersInRange:range]; NSString *s2 = [NSString stringWithFormat:@"age is 10"]; NSString *s3 = [s2 stringByAppendingString:@" 11 12"]; </span> <span style="font-size:18px;"> NSLog(@"s1=%@, s2=%@", s1, s2); return 0;}void stringExport(){ // 字符串的导出 [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSString *str = @"4234234"; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"]; [str writeToURL:url atomically:YES </span><span style="font-size:18px;">encoding:NSUTF8StringEncoding error:nil];}void stringCreate(){ //字符串的创建 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]; </span> <span style="font-size:18px;"> // NSUTF8StringEncoding 用到中文就可以用这种编码 NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; // URL : 资源路径 // 协议头://路径 // file:// // ftp:// // http://weibo.com/a.png // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"]; NSURL *url = [NSURL </span><span style="font-size:18px;">fileURLWithPath:@"/Users/apple/Desktop/1.txt"]; 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 *)#>];
集合类
一、NSArry可以保存一组指向其他对象的指针。
#import <Foundation/Foundation.h>#import "Person.h" //NSArray :不可变数组//NSMutableArray : 可变数组int main(){ // @[] 只创建不可变数组NSArray /* 错误写法 NSMutableArray *array = @[@"jack", @"rose"]; [array addObject:@"jim"]; */ //NSArray *array = @[@"jack", @"rose"]; return 0;}// 可变数组的基本使用void use3(){ NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]; // 添加元素 [array addObject:[[Person alloc] init]]; [array addObject:@"jack"]; // 删除元素 //[array removeAllObjects]; // 删除指定的对象 // [array removeObject:@"jack"]; [array removeObjectAtIndex:0]; // 错误写法 // [array addObject:nil]; NSLog(@"%@", array); NSLog(@"%ld", array.count);}// 遍历数组void use2(){ Person *p = [[Person alloc] init]; NSArray *array = @[p, @"rose", @"jack"]; for (int i = 0; i<array.count; i++) { NSLog(@"%@", array[i]); } id obj代表着数组中的每一个元素 int i = 0; for (id obj in array) { // 找出obj元素在数组中的位置 NSUInteger i = [array indexOfObject:obj]; NSLog(@"%ld - %@", i, obj); //i++; if (i==1) { break; } } [array enumerateObjectsUsingBlock: // 每遍历到一个元素,就会调用一次block // 并且当前元素和索引位置当做参数传给block ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@", idx, obj); if (idx == 0) { // 停止遍历 *stop = YES; } }]; void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@", idx, obj); if (idx == 0) { // 停止遍历 *stop = YES; } }; for (int i = 0; i<array.count; i++) { // 用来标记是否需要停止遍历 BOOL isStop = NO; // 取出元素 id obj = array[i]; myblock(obj, i, &isStop); if (isStop) { break; } }}void use(){ /* int a = 5; int ages[10] = {1, 90, 89, 17}; Person *p = [[Person alloc] init]; Person *persons[5] = {p, [[Person alloc] init]}; */ // OC数组不能存放nil值 // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等 // 这个array永远是空数组 // NSArray *array = [NSArray array]; //1.NSArray的创建 NSArray *array2 = [NSArray arrayWithObject:@"jack"]; // nil是数组元素结束的标记 NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil]; // [array2 count]; //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil]; // 快速创建一个NSArray对象 NSArray *array4 = @[@"jack", @"rose", @"4324324"]; //2.NSArray的元素个数 NSLog(@"%ld", array3.count); //3.NSArray中元素的访问 NSLog(@"%@", [array3 objectAtIndex:1]); //array3[1]; NSLog(@"%@", array3[0]);}
二、NSSet与NSArry对比,都是集合,都能存放多个oc对象,只能存放oc对象,不能存放非oc对象类型,本身都不可变,都有一个可变的子类。不同点在于,NSArry有顺序,NSSet没有顺序。
#import <Foundation/Foundation.h>int main(){ NSMutableSet *s = [NSMutableSet set]; // 添加元素 [s addObject:@"hack"]; // 删除元素 // [s removeObject:<#(id)#>]; return 0;}// set的基本使用void test(){ NSSet *s = [NSSet set]; NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]; // 随机拿出一个元素 NSString *str = [s2 anyObject]; NSLog(@"%@", str); //NSLog(@"%ld", s2.count);
0 0
- 黑马程序员--Objective-C——Foundation框架一
- 黑马程序员--Objective-C——Foundation框架二
- 黑马程序员——Objective-C——Foundation框架1
- 黑马程序员——Objective-C语言基本知识总结——Foundation框架
- 黑马程序员——Objective-C——Foundation
- 黑马程序员——Objective-c——Foundation集合
- 黑马程序员——ios基础---Objective-C:Foundation
- 黑马程序员——Objective--C笔记Foundation之NSSting
- 黑马程序员:Objective-C Foundation框架
- 黑马程序员——Foundation框架
- 黑马程序员——Foundation框架
- 黑马程序员—foundation框架总结
- 黑马程序员—Foundation框架之NSString
- 【黑马程序员】OC-Foundation框架—NSMutableString
- 黑马程序员——[Foundation]Foundation框架01
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之14-Foundation框架简介——黑马 IOS 技术博客
- 黑马程序员——Objective-c——Foundation坐标相关和字符串
- 黑马程序员——Objective-c——Foundation的NSValue和NSDate
- https HttpWebRequest
- 无边框Button(WPF)
- 从自然数1到1000中随机抽取900个不重复的数并打印出来
- 安胜安全操作系统的安全机制【涉及自主访问控制、强制访问控制、多级安全等实验】
- android NDK开发整合opencv开发——环境搭建(window环境)
- 黑马程序员——Objective-C——Foundation框架1
- cxf直接调用
- 深度学习工具箱CAFFE在64位win7+VS2013环境下编译及运行
- Vijava 学习笔记之VirtualMachine(Memory 容量更改)
- filter过滤理论知识
- UIevent事件
- Hadoop环境搭建
- The const of C/C++
- python查询数据库结果返回