您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-OC语言-Foundation框架(听课笔记)

2015-07-02 19:02 489 查看
------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;

常见用法

创建

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"];
 

由于有很多 在这里就不一一展示,在以后的博客,会继续学习总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: