正如其名,Foundation框架是所有其它iOS框架的基础。
Foundation框架包含了很多开发中常用的数据类型:
(1) 结构体
(2) 枚举
(3) 类
要想使用Foundation中的数据类型,包含它的主头文件即可
#import <Foundation/Foundation.h>
1、Foundation框架包含哪些常用的结构体?
(1) NSRange
(2) NSPointCGPoint
(3) NSSizeCGSize
(4) NSRectCGRect
2、具体介绍这4种结构体
首先,简单复习一下C语言中的结构体:
使用 typedef 对结构体进行重命名(起别名):
1、NSRange
(1) 在Foundation/NSRange.h中对 NSRange 的定义:
由此可知:NSRange结构体有两个成员:location 和 length。
其中:NSUInteger (无符号长整型)
(2) NSRange的作用:用来表示事物的一个范围,通常是字符串里的字符范围或者集合里的元素范围。
1> location : 表示该范围的起始位置
2> length : 表示该范围内所含的元素个数
比如 "I love objectice-c" 中的 "obj" 可以用 location为7, length为3 的范围来表示。
(3) 创建一个NSRange有3种方式:
第1种: 直接给成员赋值
第2种: 应用C语言的聚合结构赋值机制
第3种: Foundation框架提供的一个快捷函数NSMakeRange()
这种最常用,是重点!
练习:
(4)查找某个字符串在str中的范围 使用 rangeOfString
2、NSPointCGPoint
(1) 在Foundation/NSGeometry.h中对NSPoint的定义
(2) 在CoreGraphics/CGGeometry.h中对CGPoint的相关定义
CGFloat 就是 double
(3) NSPoint 和 CGPoint 是等价的
(4) NSPoint 和 CGPoint的作用:代表的是平面中的一个点(x, y)
(5) Foundation框架提供了一个NSMakePoint() 创建CGPoint(NSPoint)
CGPoint point = NSMakePoint(12, 20);
或者
NSPoint point = NSMakePoint(12, 20);
(6) CoreGraphics框架中也提供了CGPointMake()创建一个CGPoint(NSPoint) 这种最常用,重点!!
CGPoint point = CGPointMake(10, 20);
或者
NSPoint point = CGointMake(10, 20);
练习:
(7)CGPointzero == CGPointMake(0, 0); 即坐标原点。
3、NSSizeCGSize
(1) 在Foundation/NSGometry.h中对NSSize的定义
(2) 在CoreGraphics/CGGeometry.h中对CGSize的相关定义
(3) NSSize 和 CGSize 的作用:用来存储高度和宽度。
(4) 可以利用NSMakeSize() 和 CGSizeMake()创建CGSizeNSSize。
练习:
4、NSRectCGRect
(1) 在Foundation/NSGometry.h中对NSRect的定义
(2) 在CoreGraphics/CGGeometry.h中对CGRect的相关定义
(3) NSRect 和 CGRect 的作用:既存储点(x, y) 又存储尺寸(width, height)。
(4) 可以利用NSMakeRect() 和 CGRectMake() 来创建 CGRectNSRect。
本节重点:
(1) 虽然NSPoint、NSSize、NSRect 分别和 CGPoint 、CGSize、CGGRect等价,但是开发中最常用的还是CGPoint 、CGSize、CGRect。
(2) rangeOfString: 的用法。
(3) CGPointMake() 、 CGSizeMake() 、CGRectMake的用法。
(4)将结构体转化为OC字符串
NSStringFromRange:
NSStringFromPoint:
NSStringFromSize:
NSStringFromRect: