黑马程序员-OC语言-Foundation框架(听课笔记)
2015-07-02 19:02
489 查看
------Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)。
Cocoa是Foundation和AppKit
Cocoa Touch是Foundation和UIKit
Foundation框架中大约有125个可用的头文件,作为一个简单的形式,可以简单地使用以下语句导入 : #import <Foundation/Foundation.h> 因为Foundation.h文件实际上导入其他所有Foundation框架中的头文件。
Foundation框架包含了很多开发中常用的数据类型:
结构体
枚举
类
#import <Foundation/Foundation.h>
解决方案很简单, 只需要删除Xcode的缓存即可, 缓存路径是/Users/用户名/Library/Developer/Xcode/DerivedData(默认情况下, 这是一个隐藏文件夹)
要想看到上述文件夹, 必须在终端敲指令显示隐藏文件夹, 指令如下:
显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true
隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false
(输入指令后, 一定要重新启动Finder)
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;
常见用法
创建
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的使用
//经典的字符串赋值
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"];
由于有很多 在这里就不一一展示,在以后的博客,会继续学习总结。
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;
常见用法
创建
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的使用
//经典的字符串赋值
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"];
由于有很多 在这里就不一一展示,在以后的博客,会继续学习总结。
相关文章推荐
- C++ 让程序能够访问名称空间std的方法 以及 main函数头详解
- c++ nullptr关键字
- C++ 获取文件夹下的所有文件名 .
- C++ 沉思录》阅读笔记——类的反思
- 黑马程序员——C语言之数组与冒泡排序
- C++ Vector用法深入剖析
- stl之string类用法详细总结
- Longest Substring Without Repeating Characters: 12ms
- C++ Primer学习笔记(2)—字符串string类的使用
- leetcode 日经贴,Cpp code -Kth Smallest Element in a BST
- C++重载运算符简单总结
- C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
- [leetcode-73]Set Matrix Zeroes(C语言)
- c++ 单词转换 map对象
- C/C++ 获取文件中有效行的数量
- C/C++相对论——C++中为什么要使用异常?
- 用指向指针的指针的方法对字符串和整数排序
- vc++读写ini文件
- c++复习
- 编译frostwire项目jlibtorrent_jni.cpp