黑马程序员-OC语言-Foundation框架(听课笔记)
来源:互联网 发布:002063远光软件 编辑:程序博客网 时间:2024/06/10 21:50
------Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
1 、 Foundation 框架介绍
1)什么是框架?
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架。
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)。
Cocoa是Foundation和AppKit
Cocoa Touch是Foundation和UIKit
Foundation框架中大约有125个可用的头文件,作为一个简单的形式,可以简单地使用以下语句导入 : #import <Foundation/Foundation.h> 因为Foundation.h文件实际上导入其他所有Foundation框架中的头文件。
2)Foundation框架的作用
Foundation框架是Mac\iOS中其他框架的基础Foundation框架包含了很多开发中常用的数据类型:
结构体
枚举
类
3)如何使用Foundation框架
要想使用Foundation框架中的功能,包含它的主文件即可#import <Foundation/Foundation.h>
4)不小心修改了系统的文件,引起的错误
有时候会在不经意之间修改了系统自带的头文件, 比如NSString.h, 这时会出现以下错误:
解决方案很简单, 只需要删除Xcode的缓存即可, 缓存路径是/Users/用户名/Library/Developer/Xcode/DerivedData(默认情况下, 这是一个隐藏文件夹)
要想看到上述文件夹, 必须在终端敲指令显示隐藏文件夹, 指令如下:
显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true
隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false
(输入指令后, 一定要重新启动Finder)
2、具体内容
1.结构体
NSRange(location length)
表示一段范围
定义:
typedef struct _NSRange {
NSUIntegerlocation;
NSUIntegerlength;
} NSRange;
常见用法
创建一个nsrange
NSMakeRange(NSUInteger loc, NSUInteger len)
判断一个点是否在里面
BOOL NSLocationInRange(NSUInteger loc, NSRange range)
判断是否相等
BOOL NSEqualRanges(NSRange range1, NSRange range2)
小示例
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);
NSPoint\CGPoint
表示一个二维坐标系中的点
定义
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
常见用法
创建
CGPointMake(CGFloat x, CGFloat y)
比较两个点是否相同
CGPointEqualToPoint(CGPoint point1, CGPoint point2)
NSSize\CGSize
表示一个矩形区域
定义
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
常见用法
创建
CGSizeMake(CGFloat width, CGFloat height)
比较两个区域是否相同
CGSizeEqualToSize(CGSize size1, CGSize size2)
NSRect\CGRect (CGPint CGSize)
表示一个矩形区域以及它的位置
定义
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
常见用法
NSString的使用创建
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloatheight)
判断一个点是否在指定区域
bool CGRectContainsPoint(CGRect rect, CGPoint point)
判断两个结构体是否有交错.可以用CGRectIntersectsRect
BOOL contains = CGRectContainsRect(CGRectrect1, CGRect rect2);
BOOL contains = CGRectIntersectsRect(CGRect rect1, CGRectrect2);
//经典的字符串赋值
NSString *str0 = @"大家好我是VAE";
//字符串中加入变量赋值
NSString *str1 = [NSString stringWithFormat:@"我是歌手%d号",6];
//字符串赋值
NSString *str2 = [NSString stringWithString:@"你好!"];
//字符串转换为utf-8格式
NSString *str3 = [NSString stringWithUTF8String:"赋值为utf-8格式的字符串"];
//字符串合并
int i = 18;
char*c = "你好";
NSString *t = @"临时字符串";
//在字符串t的基础继续添加i与c 组成一个新的字符串
NSString *str4 = [t stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c];
//类似上面
NSString *str5 = [temp stringByAppendingString:temp];
//字符串输出
NSLog(@"str0 = %@", str0);
NSLog(@"str1 = %@", str1);
NSLog(@"str2 = %@", str2);
NSLog(@"str3 = %@", str3);
NSLog(@"str4 = %@", str4);
NSLog(@"str5 = %@", str5)
NSArray不可变对象数组的使用
- //NSArray的创建
- NSArray *array1 = [NSArray arrayWithObject:@"jack"];
- // nil是数组元素结束的标记
- NSArray *array2 = [NSArray arrayWithObjects:@"jack", @"rose", nil];
- NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];
- //快速创建一个NSArray对象
- NSArray *array4 = @[@"jack", @"rose", @"4324324"];
- //NSArray的元素个数
- NSLog(@"%ld", array3.count);
- //NSArray中元素的访问
- NSLog(@"%@", [array3 objectAtIndex:1]);
- //array3[1];
- NSLog(@"%@", array3[0]);
NSMutableArray可变对象数组的使用
- // @[] 只创建不可变数组NSArray
- // 错误写法
- NSMutableArray *array = @[@"jack", @"rose"];
- [array addObject:@"jim"];
- // 可变数组的基本使用
- 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];
NSSet无序对象数组的使用
- NSSet *s = [NSSet set];
- NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
- // 随机拿出一个元素
- NSString *str = [s2 anyObject];
- //NSLog(@"%ld", s2.count);
NSMutableSet无序可变数组的使用
- NSMutableSet *s = [NSMutableSet set];
- // 添加元素
- [s addObject:@"hack"];
- // 删除元素
- // [s removeObject:<#(id)#>];
NSDictionary不可变字典的使用
字典:
key ----> value
索引 ----> 文字内容
里面存储的东西都是键值对
- // 创建字典
- NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
- // 创建字典
- NSArray *keys = @[@"name", @"address"];
- NSArray *objects = @[@"jack", @"北京"];
- NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
- /*
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"jack", @"name",
- @"北京", @"address",
- @"32423434", @"qq", nil];
- */
- // 创建字典
- NSDictionary *dict3 = @{@"name" : @"jack", @"address" : @"北京"};
- //访问元素
- id obj = [dict3 objectForKey:@"name"];
- // 访问元素
- id obj = dict[@"name"];
NSMutableDictionary可变字典的使用
- NSMutableDictionary *dict = [NSMutableDictionary dictionary];
- // 添加键值对
- [dict setObject:@"jack" forKey:@"name"];
- [dict setObject:@"北京" forKey:@"address"];
- [dict setObject:@"rose" forKey:@"name"];
- // 移除键值对
- [dict removeObjectForKey:<#(id)#>];
- // 访问元素
- NSString *str = dict[@"name"];
由于有很多 在这里就不一一展示,在以后的博客,会继续学习总结。
- 黑马程序员-OC语言-Foundation框架(听课笔记)
- 黑马程序员-----oc语言学习笔记之foundation框架-NSString
- 黑马程序员---【OC语言】08Foundation框架
- 黑马程序员-OC语言Foundation框架
- 黑马程序员-OC语言-类方法(听课笔记)
- 黑马程序员-OC语言-封装的实现步骤(听课笔记)
- 黑马程序员-OC语言-依赖关系(听课笔记)
- 黑马程序员-OC语言-关联关系(听课笔记)
- 黑马程序员-OC语言-方法重载问题(听课笔记)
- 黑马程序员-OC语言-self和super关键字(听课笔记)
- 黑马程序员-OC语言-多态的实现(听课笔记)
- 黑马程序员-OC语言-类的本质(听课笔记)
- 黑马程序员-OC语言-SEL类型(听课笔记)
- 黑马程序员-OC语言-@property增强使用(听课笔记)
- 黑马程序员 OC框架: Foundation
- 黑马程序员------OC Foundation框架
- 黑马程序员 -- OC语言 Foundation
- 黑马程序员—OC语言基础—Foundation框架小结
- Linux下RPM软件包的安装与卸载方法
- CentOS6.5-连接无线网
- 2015华为软赛(三)——基本流程
- 获取网络图片
- OC代码转Swift代码
- 黑马程序员-OC语言-Foundation框架(听课笔记)
- Find Peak Element
- Android实现秒表计时器的程序设计
- Android Studio中Git的使用--新建Git项目步骤
- [Http] cookie和session
- poj 3616 奶牛产奶时间间隔dp
- sublime开发插件-初尝
- axis2 查看发布的服务
- Fastclick 导致click事件触发两次的问题